<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>What do Tim O'Reilly, Lady Gaga, and Marissa Mayer all have in common?</title>
<style type="text/css">
    .clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;}
.clearfix:after{clear:both;}
.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;}
.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}
article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;}
audio,canvas,video{display:inline-block;*display:inline;*zoom:1;}
audio:not([controls]){display:none;}
html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}
a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
a:hover,a:active{outline:0;}
sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline;}
sup{top:-0.5em;}
sub{bottom:-0.25em;}
img{max-width:100%;width:auto\9;height:auto;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic;}
#map_canvas img,.google-maps img{max-width:none;}
button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle;}
button,input{*overflow:visible;line-height:normal;}
button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0;}
button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;}
label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer;}
input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield;}
input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none;}
textarea{overflow:auto;vertical-align:top;}
@media print{*{text-shadow:none !important;color:#000 !important;background:transparent !important;box-shadow:none !important;} a,a:visited{text-decoration:underline;} a[href]:after{content:" (" attr(href) ")";} abbr[title]:after{content:" (" attr(title) ")";} .ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:"";} pre,blockquote{border:1px solid #999;page-break-inside:avoid;} thead{display:table-header-group;} tr,img{page-break-inside:avoid;} img{max-width:100% !important;} @page {margin:0.5cm;}p,h2,h3{orphans:3;widows:3;} h2,h3{page-break-after:avoid;}}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:20px;color:#000000;background-color:#ffffff;}
a{color:#0088cc;text-decoration:none;}
a:hover,a:focus{color:#005580;text-decoration:underline;}
.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);}
.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px;}
.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;}
.row:after{clear:both;}
.row:before,.row:after{display:table;content:"";line-height:0;}
.row:after{clear:both;}
[class*="span"]{float:left;min-height:1px;margin-left:20px;}
.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;}
.span12{width:940px;}
.span11{width:860px;}
.span10{width:780px;}
.span9{width:700px;}
.span8{width:620px;}
.span7{width:540px;}
.span6{width:460px;}
.span5{width:380px;}
.span4{width:300px;}
.span3{width:220px;}
.span2{width:140px;}
.span1{width:60px;}
.offset12{margin-left:980px;}
.offset11{margin-left:900px;}
.offset10{margin-left:820px;}
.offset9{margin-left:740px;}
.offset8{margin-left:660px;}
.offset7{margin-left:580px;}
.offset6{margin-left:500px;}
.offset5{margin-left:420px;}
.offset4{margin-left:340px;}
.offset3{margin-left:260px;}
.offset2{margin-left:180px;}
.offset1{margin-left:100px;}
.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;}
.row:after{clear:both;}
.row:before,.row:after{display:table;content:"";line-height:0;}
.row:after{clear:both;}
[class*="span"]{float:left;min-height:1px;margin-left:20px;}
.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;}
.span12{width:940px;}
.span11{width:860px;}
.span10{width:780px;}
.span9{width:700px;}
.span8{width:620px;}
.span7{width:540px;}
.span6{width:460px;}
.span5{width:380px;}
.span4{width:300px;}
.span3{width:220px;}
.span2{width:140px;}
.span1{width:60px;}
.offset12{margin-left:980px;}
.offset11{margin-left:900px;}
.offset10{margin-left:820px;}
.offset9{margin-left:740px;}
.offset8{margin-left:660px;}
.offset7{margin-left:580px;}
.offset6{margin-left:500px;}
.offset5{margin-left:420px;}
.offset4{margin-left:340px;}
.offset3{margin-left:260px;}
.offset2{margin-left:180px;}
.offset1{margin-left:100px;}
.row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;}
.row-fluid:after{clear:both;}
.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;}
.row-fluid:after{clear:both;}
.row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;}
.row-fluid [class*="span"]:first-child{margin-left:0;}
.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%;}
.row-fluid .span12{width:100%;*width:99.94680851063829%;}
.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%;}
.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%;}
.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%;}
.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%;}
.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%;}
.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%;}
.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%;}
.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%;}
.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%;}
.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%;}
.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%;}
.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%;}
.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%;}
.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%;}
.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%;}
.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%;}
.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%;}
.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%;}
.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%;}
.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%;}
.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%;}
.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%;}
.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%;}
.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%;}
.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%;}
.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%;}
.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%;}
.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%;}
.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%;}
.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%;}
.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%;}
.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%;}
.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%;}
.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%;}
.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%;}
.row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;}
.row-fluid:after{clear:both;}
.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;}
.row-fluid:after{clear:both;}
.row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;}
.row-fluid [class*="span"]:first-child{margin-left:0;}
.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%;}
.row-fluid .span12{width:100%;*width:99.94680851063829%;}
.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%;}
.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%;}
.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%;}
.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%;}
.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%;}
.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%;}
.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%;}
.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%;}
.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%;}
.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%;}
.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%;}
.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%;}
.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%;}
.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%;}
.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%;}
.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%;}
.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%;}
.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%;}
.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%;}
.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%;}
.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%;}
.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%;}
.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%;}
.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%;}
.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%;}
.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%;}
.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%;}
.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%;}
.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%;}
.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%;}
.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%;}
.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%;}
.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%;}
.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%;}
.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%;}
[class*="span"].hide,.row-fluid [class*="span"].hide{display:none;}
[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right;}
.container{margin-right:auto;margin-left:auto;*zoom:1;}.container:before,.container:after{display:table;content:"";line-height:0;}
.container:after{clear:both;}
.container:before,.container:after{display:table;content:"";line-height:0;}
.container:after{clear:both;}
.container:before,.container:after{display:table;content:"";line-height:0;}
.container:after{clear:both;}
.container:before,.container:after{display:table;content:"";line-height:0;}
.container:after{clear:both;}
.container-fluid{padding-right:20px;padding-left:20px;*zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";line-height:0;}
.container-fluid:after{clear:both;}
.container-fluid:before,.container-fluid:after{display:table;content:"";line-height:0;}
.container-fluid:after{clear:both;}
p{margin:0 0 10px;}
.lead{margin-bottom:20px;font-size:19.5px;font-weight:200;line-height:30px;}
small{font-size:85%;}
strong{font-weight:bold;}
em{font-style:italic;}
cite{font-style:normal;}
.muted{color:#999999;}
a.muted:hover,a.muted:focus{color:#808080;}
.text-warning{color:#c09853;}
a.text-warning:hover,a.text-warning:focus{color:#a47e3c;}
.text-error{color:#b94a48;}
a.text-error:hover,a.text-error:focus{color:#953b39;}
.text-info{color:#3a87ad;}
a.text-info:hover,a.text-info:focus{color:#2d6987;}
.text-success{color:#468847;}
a.text-success:hover,a.text-success:focus{color:#356635;}
.text-left{text-align:left;}
.text-right{text-align:right;}
.text-center{text-align:center;}
h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999999;}
h1,h2,h3{line-height:40px;}
h1{font-size:35.75px;}
h2{font-size:29.25px;}
h3{font-size:22.75px;}
h4{font-size:16.25px;}
h5{font-size:13px;}
h6{font-size:11.049999999999999px;}
h1 small{font-size:22.75px;}
h2 small{font-size:16.25px;}
h3 small{font-size:13px;}
h4 small{font-size:13px;}
.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eeeeee;}
ul,ol{padding:0;margin:0 0 10px 25px;}
ul ul,ul ol,ol ol,ol ul{margin-bottom:0;}
li{line-height:20px;}
ul.unstyled,ol.unstyled{margin-left:0;list-style:none;}
ul.inline,ol.inline{margin-left:0;list-style:none;}ul.inline>li,ol.inline>li{display:inline-block;*display:inline;*zoom:1;padding-left:5px;padding-right:5px;}
dl{margin-bottom:20px;}
dt,dd{line-height:20px;}
dt{font-weight:bold;}
dd{margin-left:10px;}
.dl-horizontal{*zoom:1;}.dl-horizontal:before,.dl-horizontal:after{display:table;content:"";line-height:0;}
.dl-horizontal:after{clear:both;}
.dl-horizontal:before,.dl-horizontal:after{display:table;content:"";line-height:0;}
.dl-horizontal:after{clear:both;}
.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.dl-horizontal dd{margin-left:180px;}
hr{margin:20px 0;border:0;border-top:1px solid #eeeeee;border-bottom:1px solid #ffffff;}
abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999999;}
abbr.initialism{font-size:90%;text-transform:uppercase;}
blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eeeeee;}blockquote p{margin-bottom:0;font-size:16.25px;font-weight:300;line-height:1.25;}
blockquote small{display:block;line-height:20px;color:#999999;}blockquote small:before{content:'\2014 \00A0';}
blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;}blockquote.pull-right p,blockquote.pull-right small{text-align:right;}
blockquote.pull-right small:before{content:'';}
blockquote.pull-right small:after{content:'\00A0 \2014';}
q:before,q:after,blockquote:before,blockquote:after{content:"";}
address{display:block;margin-bottom:20px;font-style:normal;line-height:20px;}
code,pre{padding:0 3px 2px;font-family:monospace;font-size:11px;color:#333333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8;white-space:nowrap;}
pre{display:block;padding:9.5px;margin:0 0 10px;font-size:12px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}pre.prettyprint{margin-bottom:20px;}
pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0;}
.pre-scrollable{max-height:340px;overflow-y:scroll;}
form{margin:0 0 20px;}
fieldset{padding:0;margin:0;border:0;}
legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:19.5px;line-height:40px;color:#333333;border:0;border-bottom:1px solid #e5e5e5;}legend small{font-size:15px;color:#999999;}
label,input,button,select,textarea{font-size:13px;font-weight:normal;line-height:20px;}
input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;}
label{display:block;margin-bottom:5px;}
select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:13px;line-height:20px;color:#555555;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;vertical-align:middle;}
input,textarea,.uneditable-input{width:206px;}
textarea{height:auto;}
textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#ffffff;border:1px solid #cccccc;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-webkit-transition:border linear .2s, box-shadow linear .2s;-moz-transition:border linear .2s, box-shadow linear .2s;-o-transition:border linear .2s, box-shadow linear .2s;transition:border linear .2s, box-shadow linear .2s;}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82, 168, 236, 0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);}
input[type="radio"],input[type="checkbox"]{margin:4px 0 0;*margin-top:0;margin-top:1px \9;line-height:normal;}
input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto;}
select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px;}
select{width:220px;border:1px solid #cccccc;background-color:#ffffff;}
select[multiple],select[size]{height:auto;}
select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
.uneditable-input,.uneditable-textarea{color:#999999;background-color:#fcfcfc;border-color:#cccccc;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);cursor:not-allowed;}
.uneditable-input{overflow:hidden;white-space:nowrap;}
.uneditable-textarea{width:auto;height:auto;}
input:-moz-placeholder,textarea:-moz-placeholder{color:#999999;}
input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999999;}
input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999999;}
input:-moz-placeholder,textarea:-moz-placeholder{color:#999999;}
input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999999;}
input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999999;}
.radio,.checkbox{min-height:20px;padding-left:20px;}
.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px;}
.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px;}
.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle;}
.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px;}
.input-mini{width:60px;}
.input-small{width:90px;}
.input-medium{width:150px;}
.input-large{width:210px;}
.input-xlarge{width:270px;}
.input-xxlarge{width:530px;}
input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0;}
.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block;}
input,textarea,.uneditable-input{margin-left:0;}
.controls-row [class*="span"]+[class*="span"]{margin-left:20px;}
input.span12,textarea.span12,.uneditable-input.span12{width:926px;}
input.span11,textarea.span11,.uneditable-input.span11{width:846px;}
input.span10,textarea.span10,.uneditable-input.span10{width:766px;}
input.span9,textarea.span9,.uneditable-input.span9{width:686px;}
input.span8,textarea.span8,.uneditable-input.span8{width:606px;}
input.span7,textarea.span7,.uneditable-input.span7{width:526px;}
input.span6,textarea.span6,.uneditable-input.span6{width:446px;}
input.span5,textarea.span5,.uneditable-input.span5{width:366px;}
input.span4,textarea.span4,.uneditable-input.span4{width:286px;}
input.span3,textarea.span3,.uneditable-input.span3{width:206px;}
input.span2,textarea.span2,.uneditable-input.span2{width:126px;}
input.span1,textarea.span1,.uneditable-input.span1{width:46px;}
input,textarea,.uneditable-input{margin-left:0;}
.controls-row [class*="span"]+[class*="span"]{margin-left:20px;}
input.span12,textarea.span12,.uneditable-input.span12{width:926px;}
input.span11,textarea.span11,.uneditable-input.span11{width:846px;}
input.span10,textarea.span10,.uneditable-input.span10{width:766px;}
input.span9,textarea.span9,.uneditable-input.span9{width:686px;}
input.span8,textarea.span8,.uneditable-input.span8{width:606px;}
input.span7,textarea.span7,.uneditable-input.span7{width:526px;}
input.span6,textarea.span6,.uneditable-input.span6{width:446px;}
input.span5,textarea.span5,.uneditable-input.span5{width:366px;}
input.span4,textarea.span4,.uneditable-input.span4{width:286px;}
input.span3,textarea.span3,.uneditable-input.span3{width:206px;}
input.span2,textarea.span2,.uneditable-input.span2{width:126px;}
input.span1,textarea.span1,.uneditable-input.span1{width:46px;}
.controls-row{*zoom:1;}.controls-row:before,.controls-row:after{display:table;content:"";line-height:0;}
.controls-row:after{clear:both;}
.controls-row:before,.controls-row:after{display:table;content:"";line-height:0;}
.controls-row:after{clear:both;}
.controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left;}
.controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px;}
input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eeeeee;}
input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent;}
.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853;}
.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;}
.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;}
.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853;}
.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853;}
.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;}
.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;}
.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853;}
.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48;}
.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;}
.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;}
.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48;}
.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48;}
.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;}
.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;}
.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48;}
.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847;}
.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;}
.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;}
.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847;}
.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847;}
.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;}
.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;}
.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847;}
.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad;}
.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad;}
.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;}
.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad;}
.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad;}
.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad;}
.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;}
.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad;}
input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b;}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7;}
.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1;}.form-actions:before,.form-actions:after{display:table;content:"";line-height:0;}
.form-actions:after{clear:both;}
.form-actions:before,.form-actions:after{display:table;content:"";line-height:0;}
.form-actions:after{clear:both;}
.help-block,.help-inline{color:#262626;}
.help-block{display:block;margin-bottom:10px;}
.help-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding-left:5px;}
.input-append,.input-prepend{display:inline-block;margin-bottom:10px;vertical-align:middle;font-size:0;white-space:nowrap;}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu,.input-append .popover,.input-prepend .popover{font-size:13px;}
.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2;}
.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:13px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #ffffff;background-color:#eeeeee;border:1px solid #ccc;}
.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546;}
.input-prepend .add-on,.input-prepend .btn{margin-right:-1px;}
.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}
.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
.input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px;}
.input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}
.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
.input-prepend.input-append .btn-group:first-child{margin-left:0;}
input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;}
.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px;}
.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0;}
.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0;}
.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px;}
.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;*zoom:1;margin-bottom:0;vertical-align:middle;}
.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none;}
.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block;}
.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0;}
.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle;}
.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0;}
.control-group{margin-bottom:10px;}
legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate;}
.form-horizontal .control-group{margin-bottom:20px;*zoom:1;}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";line-height:0;}
.form-horizontal .control-group:after{clear:both;}
.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";line-height:0;}
.form-horizontal .control-group:after{clear:both;}
.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right;}
.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0;}.form-horizontal .controls:first-child{*padding-left:180px;}
.form-horizontal .help-block{margin-bottom:0;}
.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10px;}
.form-horizontal .form-actions{padding-left:180px;}
table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0;}
.table{width:100%;margin-bottom:20px;}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #dddddd;}
.table th{font-weight:bold;}
.table thead th{vertical-align:bottom;}
.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0;}
.table tbody+tbody{border-top:2px solid #dddddd;}
.table .table{background-color:#ffffff;}
.table-condensed th,.table-condensed td{padding:4px 5px;}
.table-bordered{border:1px solid #dddddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.table-bordered th,.table-bordered td{border-left:1px solid #dddddd;}
.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0;}
.table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child,.table-bordered tbody:first-child tr:first-child>th:first-child{-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;}
.table-bordered thead:first-child tr:first-child>th:last-child,.table-bordered tbody:first-child tr:first-child>td:last-child,.table-bordered tbody:first-child tr:first-child>th:last-child{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;}
.table-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tbody:last-child tr:last-child>th:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>th:first-child{-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}
.table-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tbody:last-child tr:last-child>th:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>th:last-child{-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;}
.table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;-moz-border-radius-bottomleft:0;border-bottom-left-radius:0;}
.table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;-moz-border-radius-bottomright:0;border-bottom-right-radius:0;}
.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;}
.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;}
.table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9;}
.table-hover tbody tr:hover>td,.table-hover tbody tr:hover>th{background-color:#f5f5f5;}
table td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0;}
.table td.span1,.table th.span1{float:none;width:44px;margin-left:0;}
.table td.span2,.table th.span2{float:none;width:124px;margin-left:0;}
.table td.span3,.table th.span3{float:none;width:204px;margin-left:0;}
.table td.span4,.table th.span4{float:none;width:284px;margin-left:0;}
.table td.span5,.table th.span5{float:none;width:364px;margin-left:0;}
.table td.span6,.table th.span6{float:none;width:444px;margin-left:0;}
.table td.span7,.table th.span7{float:none;width:524px;margin-left:0;}
.table td.span8,.table th.span8{float:none;width:604px;margin-left:0;}
.table td.span9,.table th.span9{float:none;width:684px;margin-left:0;}
.table td.span10,.table th.span10{float:none;width:764px;margin-left:0;}
.table td.span11,.table th.span11{float:none;width:844px;margin-left:0;}
.table td.span12,.table th.span12{float:none;width:924px;margin-left:0;}
.table tbody tr.success>td{background-color:#dff0d8;}
.table tbody tr.error>td{background-color:#f2dede;}
.table tbody tr.warning>td{background-color:#fcf8e3;}
.table tbody tr.info>td{background-color:#d9edf7;}
.table-hover tbody tr.success:hover>td{background-color:#d0e9c6;}
.table-hover tbody tr.error:hover>td{background-color:#ebcccc;}
.table-hover tbody tr.warning:hover>td{background-color:#faf2cc;}
.table-hover tbody tr.info:hover>td{background-color:#c4e3f3;}
[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat;margin-top:1px;}
.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:focus>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>li>a:focus>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:focus>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"],.dropdown-submenu:focus>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png");}
.icon-glass{background-position:0 0;}
.icon-music{background-position:-24px 0;}
.icon-search{background-position:-48px 0;}
.icon-envelope{background-position:-72px 0;}
.icon-heart{background-position:-96px 0;}
.icon-star{background-position:-120px 0;}
.icon-star-empty{background-position:-144px 0;}
.icon-user{background-position:-168px 0;}
.icon-film{background-position:-192px 0;}
.icon-th-large{background-position:-216px 0;}
.icon-th{background-position:-240px 0;}
.icon-th-list{background-position:-264px 0;}
.icon-ok{background-position:-288px 0;}
.icon-remove{background-position:-312px 0;}
.icon-zoom-in{background-position:-336px 0;}
.icon-zoom-out{background-position:-360px 0;}
.icon-off{background-position:-384px 0;}
.icon-signal{background-position:-408px 0;}
.icon-cog{background-position:-432px 0;}
.icon-trash{background-position:-456px 0;}
.icon-home{background-position:0 -24px;}
.icon-file{background-position:-24px -24px;}
.icon-time{background-position:-48px -24px;}
.icon-road{background-position:-72px -24px;}
.icon-download-alt{background-position:-96px -24px;}
.icon-download{background-position:-120px -24px;}
.icon-upload{background-position:-144px -24px;}
.icon-inbox{background-position:-168px -24px;}
.icon-play-circle{background-position:-192px -24px;}
.icon-repeat{background-position:-216px -24px;}
.icon-refresh{background-position:-240px -24px;}
.icon-list-alt{background-position:-264px -24px;}
.icon-lock{background-position:-287px -24px;}
.icon-flag{background-position:-312px -24px;}
.icon-headphones{background-position:-336px -24px;}
.icon-volume-off{background-position:-360px -24px;}
.icon-volume-down{background-position:-384px -24px;}
.icon-volume-up{background-position:-408px -24px;}
.icon-qrcode{background-position:-432px -24px;}
.icon-barcode{background-position:-456px -24px;}
.icon-tag{background-position:0 -48px;}
.icon-tags{background-position:-25px -48px;}
.icon-book{background-position:-48px -48px;}
.icon-bookmark{background-position:-72px -48px;}
.icon-print{background-position:-96px -48px;}
.icon-camera{background-position:-120px -48px;}
.icon-font{background-position:-144px -48px;}
.icon-bold{background-position:-167px -48px;}
.icon-italic{background-position:-192px -48px;}
.icon-text-height{background-position:-216px -48px;}
.icon-text-width{background-position:-240px -48px;}
.icon-align-left{background-position:-264px -48px;}
.icon-align-center{background-position:-288px -48px;}
.icon-align-right{background-position:-312px -48px;}
.icon-align-justify{background-position:-336px -48px;}
.icon-list{background-position:-360px -48px;}
.icon-indent-left{background-position:-384px -48px;}
.icon-indent-right{background-position:-408px -48px;}
.icon-facetime-video{background-position:-432px -48px;}
.icon-picture{background-position:-456px -48px;}
.icon-pencil{background-position:0 -72px;}
.icon-map-marker{background-position:-24px -72px;}
.icon-adjust{background-position:-48px -72px;}
.icon-tint{background-position:-72px -72px;}
.icon-edit{background-position:-96px -72px;}
.icon-share{background-position:-120px -72px;}
.icon-check{background-position:-144px -72px;}
.icon-move{background-position:-168px -72px;}
.icon-step-backward{background-position:-192px -72px;}
.icon-fast-backward{background-position:-216px -72px;}
.icon-backward{background-position:-240px -72px;}
.icon-play{background-position:-264px -72px;}
.icon-pause{background-position:-288px -72px;}
.icon-stop{background-position:-312px -72px;}
.icon-forward{background-position:-336px -72px;}
.icon-fast-forward{background-position:-360px -72px;}
.icon-step-forward{background-position:-384px -72px;}
.icon-eject{background-position:-408px -72px;}
.icon-chevron-left{background-position:-432px -72px;}
.icon-chevron-right{background-position:-456px -72px;}
.icon-plus-sign{background-position:0 -96px;}
.icon-minus-sign{background-position:-24px -96px;}
.icon-remove-sign{background-position:-48px -96px;}
.icon-ok-sign{background-position:-72px -96px;}
.icon-question-sign{background-position:-96px -96px;}
.icon-info-sign{background-position:-120px -96px;}
.icon-screenshot{background-position:-144px -96px;}
.icon-remove-circle{background-position:-168px -96px;}
.icon-ok-circle{background-position:-192px -96px;}
.icon-ban-circle{background-position:-216px -96px;}
.icon-arrow-left{background-position:-240px -96px;}
.icon-arrow-right{background-position:-264px -96px;}
.icon-arrow-up{background-position:-289px -96px;}
.icon-arrow-down{background-position:-312px -96px;}
.icon-share-alt{background-position:-336px -96px;}
.icon-resize-full{background-position:-360px -96px;}
.icon-resize-small{background-position:-384px -96px;}
.icon-plus{background-position:-408px -96px;}
.icon-minus{background-position:-433px -96px;}
.icon-asterisk{background-position:-456px -96px;}
.icon-exclamation-sign{background-position:0 -120px;}
.icon-gift{background-position:-24px -120px;}
.icon-leaf{background-position:-48px -120px;}
.icon-fire{background-position:-72px -120px;}
.icon-eye-open{background-position:-96px -120px;}
.icon-eye-close{background-position:-120px -120px;}
.icon-warning-sign{background-position:-144px -120px;}
.icon-plane{background-position:-168px -120px;}
.icon-calendar{background-position:-192px -120px;}
.icon-random{background-position:-216px -120px;width:16px;}
.icon-comment{background-position:-240px -120px;}
.icon-magnet{background-position:-264px -120px;}
.icon-chevron-up{background-position:-288px -120px;}
.icon-chevron-down{background-position:-313px -119px;}
.icon-retweet{background-position:-336px -120px;}
.icon-shopping-cart{background-position:-360px -120px;}
.icon-folder-close{background-position:-384px -120px;width:16px;}
.icon-folder-open{background-position:-408px -120px;width:16px;}
.icon-resize-vertical{background-position:-432px -119px;}
.icon-resize-horizontal{background-position:-456px -118px;}
.icon-hdd{background-position:0 -144px;}
.icon-bullhorn{background-position:-24px -144px;}
.icon-bell{background-position:-48px -144px;}
.icon-certificate{background-position:-72px -144px;}
.icon-thumbs-up{background-position:-96px -144px;}
.icon-thumbs-down{background-position:-120px -144px;}
.icon-hand-right{background-position:-144px -144px;}
.icon-hand-left{background-position:-168px -144px;}
.icon-hand-up{background-position:-192px -144px;}
.icon-hand-down{background-position:-216px -144px;}
.icon-circle-arrow-right{background-position:-240px -144px;}
.icon-circle-arrow-left{background-position:-264px -144px;}
.icon-circle-arrow-up{background-position:-288px -144px;}
.icon-circle-arrow-down{background-position:-312px -144px;}
.icon-globe{background-position:-336px -144px;}
.icon-wrench{background-position:-360px -144px;}
.icon-tasks{background-position:-384px -144px;}
.icon-filter{background-position:-408px -144px;}
.icon-briefcase{background-position:-432px -144px;}
.icon-fullscreen{background-position:-456px -144px;}
.dropup,.dropdown{position:relative;}
.dropdown-toggle{*margin-bottom:-3px;}
.dropdown-toggle:active,.open .dropdown-toggle{outline:0;}
.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000000;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}
.dropdown .caret{margin-top:8px;margin-left:2px;}
.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#ffffff;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;}.dropdown-menu.pull-right{right:0;left:auto;}
.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;}
.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333333;white-space:nowrap;}
.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-submenu:hover>a,.dropdown-submenu:focus>a{text-decoration:none;color:#ffffff;background-color:#0081c2;background-image:-moz-linear-gradient(top, #0088cc, #0077b3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));background-image:-webkit-linear-gradient(top, #0088cc, #0077b3);background-image:-o-linear-gradient(top, #0088cc, #0077b3);background-image:linear-gradient(to bottom, #0088cc, #0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);}
.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#0081c2;background-image:-moz-linear-gradient(top, #0088cc, #0077b3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));background-image:-webkit-linear-gradient(top, #0088cc, #0077b3);background-image:-o-linear-gradient(top, #0088cc, #0077b3);background-image:linear-gradient(to bottom, #0088cc, #0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);}
.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999999;}
.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:default;}
.open{*z-index:1000;}.open>.dropdown-menu{display:block;}
.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990;}
.pull-right>.dropdown-menu{right:0;left:auto;}
.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000000;content:"";}
.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px;}
.dropdown-submenu{position:relative;}
.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px;}
.dropdown-submenu:hover>.dropdown-menu{display:block;}
.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0;}
.dropdown-submenu>a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#cccccc;margin-top:5px;margin-right:-10px;}
.dropdown-submenu:hover>a:after{border-left-color:#ffffff;}
.dropdown-submenu.pull-left{float:none;}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px;}
.dropdown .dropdown-menu .nav-header{padding-left:20px;padding-right:20px;}
.typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0, 0, 0, 0.15);}
.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-moz-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;}.fade.in{opacity:1;}
.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height 0.35s ease;-moz-transition:height 0.35s ease;-o-transition:height 0.35s ease;transition:height 0.35s ease;}.collapse.in{height:auto;}
.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20);}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.4;filter:alpha(opacity=40);}
button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;}
.btn{display:inline-block;*display:inline;*zoom:1;padding:4px 12px;margin-bottom:0;font-size:13px;line-height:20px;text-align:center;vertical-align:middle;cursor:pointer;color:#333333;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);background-color:#f5f5f5;background-image:-moz-linear-gradient(top, #ffffff, #e6e6e6);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(top, #ffffff, #e6e6e6);background-image:-o-linear-gradient(top, #ffffff, #e6e6e6);background-image:linear-gradient(to bottom, #ffffff, #e6e6e6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#e6e6e6;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);border:1px solid #cccccc;*border:0;border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*margin-left:.3em;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);}.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333333;background-color:#e6e6e6;*background-color:#d9d9d9;}
.btn:active,.btn.active{background-color:#cccccc \9;}
.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333333;background-color:#e6e6e6;*background-color:#d9d9d9;}
.btn:active,.btn.active{background-color:#cccccc \9;}
.btn:first-child{*margin-left:0;}
.btn:first-child{*margin-left:0;}
.btn:hover,.btn:focus{color:#333333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position 0.1s linear;-moz-transition:background-position 0.1s linear;-o-transition:background-position 0.1s linear;transition:background-position 0.1s linear;}
.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);}
.btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
.btn-large{padding:11px 19px;font-size:16.25px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
.btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px;}
.btn-small{padding:2px 10px;font-size:11.049999999999999px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
.btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0;}
.btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px;}
.btn-mini{padding:0 6px;font-size:9.75px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
.btn-block{display:block;width:100%;padding-left:0;padding-right:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}
.btn-block+.btn-block{margin-top:5px;}
input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%;}
.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255, 255, 255, 0.75);}
.btn-primary{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#006dcc;background-image:-moz-linear-gradient(top, #0088cc, #0044cc);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));background-image:-webkit-linear-gradient(top, #0088cc, #0044cc);background-image:-o-linear-gradient(top, #0088cc, #0044cc);background-image:linear-gradient(to bottom, #0088cc, #0044cc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);border-color:#0044cc #0044cc #002a80;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#0044cc;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#ffffff;background-color:#0044cc;*background-color:#003bb3;}
.btn-primary:active,.btn-primary.active{background-color:#003399 \9;}
.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#ffffff;background-color:#0044cc;*background-color:#003bb3;}
.btn-primary:active,.btn-primary.active{background-color:#003399 \9;}
.btn-warning{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(to bottom, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);border-color:#f89406 #f89406 #ad6704;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#f89406;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#ffffff;background-color:#f89406;*background-color:#df8505;}
.btn-warning:active,.btn-warning.active{background-color:#c67605 \9;}
.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#ffffff;background-color:#f89406;*background-color:#df8505;}
.btn-warning:active,.btn-warning.active{background-color:#c67605 \9;}
.btn-danger{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#da4f49;background-image:-moz-linear-gradient(top, #ee5f5b, #bd362f);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));background-image:-webkit-linear-gradient(top, #ee5f5b, #bd362f);background-image:-o-linear-gradient(top, #ee5f5b, #bd362f);background-image:linear-gradient(to bottom, #ee5f5b, #bd362f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);border-color:#bd362f #bd362f #802420;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#bd362f;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#ffffff;background-color:#bd362f;*background-color:#a9302a;}
.btn-danger:active,.btn-danger.active{background-color:#942a25 \9;}
.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#ffffff;background-color:#bd362f;*background-color:#a9302a;}
.btn-danger:active,.btn-danger.active{background-color:#942a25 \9;}
.btn-success{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#5bb75b;background-image:-moz-linear-gradient(top, #62c462, #51a351);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));background-image:-webkit-linear-gradient(top, #62c462, #51a351);background-image:-o-linear-gradient(top, #62c462, #51a351);background-image:linear-gradient(to bottom, #62c462, #51a351);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);border-color:#51a351 #51a351 #387038;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#51a351;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#ffffff;background-color:#51a351;*background-color:#499249;}
.btn-success:active,.btn-success.active{background-color:#408140 \9;}
.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#ffffff;background-color:#51a351;*background-color:#499249;}
.btn-success:active,.btn-success.active{background-color:#408140 \9;}
.btn-info{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#49afcd;background-image:-moz-linear-gradient(top, #5bc0de, #2f96b4);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));background-image:-webkit-linear-gradient(top, #5bc0de, #2f96b4);background-image:-o-linear-gradient(top, #5bc0de, #2f96b4);background-image:linear-gradient(to bottom, #5bc0de, #2f96b4);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#2f96b4;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#ffffff;background-color:#2f96b4;*background-color:#2a85a0;}
.btn-info:active,.btn-info.active{background-color:#24748c \9;}
.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#ffffff;background-color:#2f96b4;*background-color:#2a85a0;}
.btn-info:active,.btn-info.active{background-color:#24748c \9;}
.btn-inverse{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#363636;background-image:-moz-linear-gradient(top, #444444, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));background-image:-webkit-linear-gradient(top, #444444, #222222);background-image:-o-linear-gradient(top, #444444, #222222);background-image:linear-gradient(to bottom, #444444, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);border-color:#222222 #222222 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#222222;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#ffffff;background-color:#222222;*background-color:#151515;}
.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9;}
.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#ffffff;background-color:#222222;*background-color:#151515;}
.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9;}
button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px;}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0;}
button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px;}
button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px;}
button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px;}
.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
.btn-link{border-color:transparent;cursor:pointer;color:#0088cc;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
.btn-link:hover,.btn-link:focus{color:#005580;text-decoration:underline;background-color:transparent;}
.btn-link[disabled]:hover,.btn-link[disabled]:focus{color:#333333;text-decoration:none;}
.btn-group{position:relative;display:inline-block;*display:inline;*zoom:1;font-size:0;vertical-align:middle;white-space:nowrap;*margin-left:.3em;}.btn-group:first-child{*margin-left:0;}
.btn-group:first-child{*margin-left:0;}
.btn-group+.btn-group{margin-left:5px;}
.btn-toolbar{font-size:0;margin-top:10px;margin-bottom:10px;}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px;}
.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
.btn-group>.btn+.btn{margin-left:-1px;}
.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:13px;}
.btn-group>.btn-mini{font-size:9.75px;}
.btn-group>.btn-small{font-size:11.049999999999999px;}
.btn-group>.btn-large{font-size:16.25px;}
.btn-group>.btn:first-child{margin-left:0;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}
.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;}
.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;}
.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px;}
.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2;}
.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0;}
.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);*padding-top:5px;*padding-bottom:5px;}
.btn-group>.btn-mini+.dropdown-toggle{padding-left:5px;padding-right:5px;*padding-top:2px;*padding-bottom:2px;}
.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px;}
.btn-group>.btn-large+.dropdown-toggle{padding-left:12px;padding-right:12px;*padding-top:7px;*padding-bottom:7px;}
.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);}
.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6;}
.btn-group.open .btn-primary.dropdown-toggle{background-color:#0044cc;}
.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406;}
.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f;}
.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351;}
.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4;}
.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222222;}
.btn .caret{margin-top:8px;margin-left:0;}
.btn-large .caret{margin-top:6px;}
.btn-large .caret{border-left-width:5px;border-right-width:5px;border-top-width:5px;}
.btn-mini .caret,.btn-small .caret{margin-top:8px;}
.dropup .btn-large .caret{border-bottom-width:5px;}
.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;}
.btn-group-vertical{display:inline-block;*display:inline;*zoom:1;}
.btn-group-vertical>.btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
.btn-group-vertical>.btn+.btn{margin-left:0;margin-top:-1px;}
.btn-group-vertical>.btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}
.btn-group-vertical>.btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}
.btn-group-vertical>.btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0;}
.btn-group-vertical>.btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;}
.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
.alert,.alert h4{color:#c09853;}
.alert h4{margin:0;}
.alert .close{position:relative;top:-2px;right:-21px;line-height:20px;}
.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847;}
.alert-success h4{color:#468847;}
.alert-danger,.alert-error{background-color:#f2dede;border-color:#eed3d7;color:#b94a48;}
.alert-danger h4,.alert-error h4{color:#b94a48;}
.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad;}
.alert-info h4{color:#3a87ad;}
.alert-block{padding-top:14px;padding-bottom:14px;}
.alert-block>p,.alert-block>ul{margin-bottom:0;}
.alert-block p+p{margin-top:5px;}
.nav{margin-left:0;margin-bottom:20px;list-style:none;}
.nav>li>a{display:block;}
.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eeeeee;}
.nav>li>a>img{max-width:none;}
.nav>.pull-right{float:right;}
.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999999;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);text-transform:uppercase;}
.nav li+.nav-header{margin-top:9px;}
.nav-list{padding-left:15px;padding-right:15px;margin-bottom:0;}
.nav-list>li>a,.nav-list .nav-header{margin-left:-15px;margin-right:-15px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);}
.nav-list>li>a{padding:3px 15px;}
.nav-list>.active>a,.nav-list>.active>a:hover,.nav-list>.active>a:focus{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.2);background-color:#0088cc;}
.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px;}
.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;}
.nav-tabs,.nav-pills{*zoom:1;}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:"";line-height:0;}
.nav-tabs:after,.nav-pills:after{clear:both;}
.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:"";line-height:0;}
.nav-tabs:after,.nav-pills:after{clear:both;}
.nav-tabs>li,.nav-pills>li{float:left;}
.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px;}
.nav-tabs{border-bottom:1px solid #ddd;}
.nav-tabs>li{margin-bottom:-1px;}
.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}.nav-tabs>li>a:hover,.nav-tabs>li>a:focus{border-color:#eeeeee #eeeeee #dddddd;}
.nav-tabs>.active>a,.nav-tabs>.active>a:hover,.nav-tabs>.active>a:focus{color:#555555;background-color:#ffffff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default;}
.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
.nav-pills>.active>a,.nav-pills>.active>a:hover,.nav-pills>.active>a:focus{color:#ffffff;background-color:#0088cc;}
.nav-stacked>li{float:none;}
.nav-stacked>li>a{margin-right:0;}
.nav-tabs.nav-stacked{border-bottom:0;}
.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;}
.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}
.nav-tabs.nav-stacked>li>a:hover,.nav-tabs.nav-stacked>li>a:focus{border-color:#ddd;z-index:2;}
.nav-pills.nav-stacked>li>a{margin-bottom:3px;}
.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px;}
.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;}
.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
.nav .dropdown-toggle .caret{border-top-color:#0088cc;border-bottom-color:#0088cc;margin-top:6px;}
.nav .dropdown-toggle:hover .caret,.nav .dropdown-toggle:focus .caret{border-top-color:#005580;border-bottom-color:#005580;}
.nav-tabs .dropdown-toggle .caret{margin-top:8px;}
.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff;}
.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555555;border-bottom-color:#555555;}
.nav>.dropdown.active>a:hover,.nav>.dropdown.active>a:focus{cursor:pointer;}
.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover,.nav>li.dropdown.open.active>a:focus{color:#ffffff;background-color:#999999;border-color:#999999;}
.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret,.nav li.dropdown.open a:focus .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;opacity:1;filter:alpha(opacity=100);}
.tabs-stacked .open>a:hover,.tabs-stacked .open>a:focus{border-color:#999999;}
.tabbable{*zoom:1;}.tabbable:before,.tabbable:after{display:table;content:"";line-height:0;}
.tabbable:after{clear:both;}
.tabbable:before,.tabbable:after{display:table;content:"";line-height:0;}
.tabbable:after{clear:both;}
.tab-content{overflow:auto;}
.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0;}
.tab-content>.tab-pane,.pill-content>.pill-pane{display:none;}
.tab-content>.active,.pill-content>.active{display:block;}
.tabs-below>.nav-tabs{border-top:1px solid #ddd;}
.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0;}
.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}.tabs-below>.nav-tabs>li>a:hover,.tabs-below>.nav-tabs>li>a:focus{border-bottom-color:transparent;border-top-color:#ddd;}
.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover,.tabs-below>.nav-tabs>.active>a:focus{border-color:transparent #ddd #ddd #ddd;}
.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none;}
.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px;}
.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd;}
.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}
.tabs-left>.nav-tabs>li>a:hover,.tabs-left>.nav-tabs>li>a:focus{border-color:#eeeeee #dddddd #eeeeee #eeeeee;}
.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover,.tabs-left>.nav-tabs .active>a:focus{border-color:#ddd transparent #ddd #ddd;*border-right-color:#ffffff;}
.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd;}
.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
.tabs-right>.nav-tabs>li>a:hover,.tabs-right>.nav-tabs>li>a:focus{border-color:#eeeeee #eeeeee #eeeeee #dddddd;}
.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover,.tabs-right>.nav-tabs .active>a:focus{border-color:#ddd #ddd #ddd transparent;*border-left-color:#ffffff;}
.nav>.disabled>a{color:#999999;}
.nav>.disabled>a:hover,.nav>.disabled>a:focus{text-decoration:none;background-color:transparent;cursor:default;}
.navbar{overflow:visible;margin-bottom:20px;*position:relative;*z-index:2;}
.navbar-inner{min-height:36px;padding-left:20px;padding-right:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top, #ffffff, #f2f2f2);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));background-image:-webkit-linear-gradient(top, #ffffff, #f2f2f2);background-image:-o-linear-gradient(top, #ffffff, #f2f2f2);background-image:linear-gradient(to bottom, #ffffff, #f2f2f2);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 4px rgba(0, 0, 0, 0.065);-moz-box-shadow:0 1px 4px rgba(0, 0, 0, 0.065);box-shadow:0 1px 4px rgba(0, 0, 0, 0.065);*zoom:1;}.navbar-inner:before,.navbar-inner:after{display:table;content:"";line-height:0;}
.navbar-inner:after{clear:both;}
.navbar-inner:before,.navbar-inner:after{display:table;content:"";line-height:0;}
.navbar-inner:after{clear:both;}
.navbar .container{width:auto;}
.nav-collapse.collapse{height:auto;overflow:visible;}
.navbar .brand{float:left;display:block;padding:8px 20px 8px;margin-left:-20px;font-size:20px;font-weight:200;color:#777777;text-shadow:0 1px 0 #ffffff;}.navbar .brand:hover,.navbar .brand:focus{text-decoration:none;}
.navbar-text{margin-bottom:0;line-height:36px;color:#777777;}
.navbar-link{color:#777777;}.navbar-link:hover,.navbar-link:focus{color:#333333;}
.navbar .divider-vertical{height:36px;margin:0 9px;border-left:1px solid #f2f2f2;border-right:1px solid #ffffff;}
.navbar .btn,.navbar .btn-group{margin-top:3px;}
.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn,.navbar .input-prepend .btn-group,.navbar .input-append .btn-group{margin-top:0;}
.navbar-form{margin-bottom:0;*zoom:1;}.navbar-form:before,.navbar-form:after{display:table;content:"";line-height:0;}
.navbar-form:after{clear:both;}
.navbar-form:before,.navbar-form:after{display:table;content:"";line-height:0;}
.navbar-form:after{clear:both;}
.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:3px;}
.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0;}
.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px;}
.navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap;}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0;}
.navbar-search{position:relative;float:left;margin-top:3px;margin-bottom:0;}.navbar-search .search-query{margin-bottom:0;padding:4px 14px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;}
.navbar-static-top{position:static;margin-bottom:0;}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0;}
.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px;}
.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0;}
.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-left:0;padding-right:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;}
.navbar-fixed-top{top:0;}
.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,.1);box-shadow:0 1px 10px rgba(0,0,0,.1);}
.navbar-fixed-bottom{bottom:0;}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,.1);box-shadow:0 -1px 10px rgba(0,0,0,.1);}
.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0;}
.navbar .nav.pull-right{float:right;margin-right:0;}
.navbar .nav>li{float:left;}
.navbar .nav>li>a{float:none;padding:8px 15px 8px;color:#777777;text-decoration:none;text-shadow:0 1px 0 #ffffff;}
.navbar .nav .dropdown-toggle .caret{margin-top:8px;}
.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{background-color:transparent;color:#333333;text-decoration:none;}
.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0, 0, 0, 0.125);-moz-box-shadow:inset 0 3px 8px rgba(0, 0, 0, 0.125);box-shadow:inset 0 3px 8px rgba(0, 0, 0, 0.125);}
.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-left:5px;margin-right:5px;color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#ededed;background-image:-moz-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));background-image:-webkit-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:-o-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:linear-gradient(to bottom, #f2f2f2, #e5e5e5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#e5e5e5;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);}.navbar .btn-navbar:hover,.navbar .btn-navbar:focus,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#ffffff;background-color:#e5e5e5;*background-color:#d9d9d9;}
.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#cccccc \9;}
.navbar .btn-navbar:hover,.navbar .btn-navbar:focus,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#ffffff;background-color:#e5e5e5;*background-color:#d9d9d9;}
.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#cccccc \9;}
.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);-moz-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);}
.btn-navbar .icon-bar+.icon-bar{margin-top:3px;}
.navbar .nav>li>.dropdown-menu:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0, 0, 0, 0.2);position:absolute;top:-7px;left:9px;}
.navbar .nav>li>.dropdown-menu:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #ffffff;position:absolute;top:-6px;left:10px;}
.navbar-fixed-bottom .nav>li>.dropdown-menu:before{border-top:7px solid #ccc;border-top-color:rgba(0, 0, 0, 0.2);border-bottom:0;bottom:-7px;top:auto;}
.navbar-fixed-bottom .nav>li>.dropdown-menu:after{border-top:6px solid #ffffff;border-bottom:0;bottom:-6px;top:auto;}
.navbar .nav li.dropdown>a:hover .caret,.navbar .nav li.dropdown>a:focus .caret{border-top-color:#333333;border-bottom-color:#333333;}
.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{background-color:#e5e5e5;color:#555555;}
.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777777;border-bottom-color:#777777;}
.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555555;border-bottom-color:#555555;}
.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{left:auto;right:0;}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{left:auto;right:12px;}
.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{left:auto;right:13px;}
.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{left:auto;right:100%;margin-left:0;margin-right:-1px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px;}
.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top, #222222, #111111);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));background-image:-webkit-linear-gradient(top, #222222, #111111);background-image:-o-linear-gradient(top, #222222, #111111);background-image:linear-gradient(to bottom, #222222, #111111);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);border-color:#252525;}
.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999999;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover,.navbar-inverse .brand:focus,.navbar-inverse .nav>li>a:focus{color:#ffffff;}
.navbar-inverse .brand{color:#999999;}
.navbar-inverse .navbar-text{color:#999999;}
.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{background-color:transparent;color:#ffffff;}
.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#ffffff;background-color:#111111;}
.navbar-inverse .navbar-link{color:#999999;}.navbar-inverse .navbar-link:hover,.navbar-inverse .navbar-link:focus{color:#ffffff;}
.navbar-inverse .divider-vertical{border-left-color:#111111;border-right-color:#222222;}
.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{background-color:#111111;color:#ffffff;}
.navbar-inverse .nav li.dropdown>a:hover .caret,.navbar-inverse .nav li.dropdown>a:focus .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;}
.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999999;border-bottom-color:#999999;}
.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;}
.navbar-inverse .navbar-search .search-query{color:#ffffff;background-color:#515151;border-color:#111111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none;}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#cccccc;}
.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#cccccc;}
.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#cccccc;}
.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#cccccc;}
.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#cccccc;}
.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#cccccc;}
.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333333;text-shadow:0 1px 0 #ffffff;background-color:#ffffff;border:0;-webkit-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);-moz-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);box-shadow:0 0 3px rgba(0, 0, 0, 0.15);outline:0;}
.navbar-inverse .btn-navbar{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e0e0e;background-image:-moz-linear-gradient(top, #151515, #040404);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));background-image:-webkit-linear-gradient(top, #151515, #040404);background-image:-o-linear-gradient(top, #151515, #040404);background-image:linear-gradient(to bottom, #151515, #040404);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);border-color:#040404 #040404 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#040404;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#ffffff;background-color:#040404;*background-color:#000000;}
.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000000 \9;}
.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#ffffff;background-color:#040404;*background-color:#000000;}
.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000000 \9;}
.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.breadcrumb>li{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 0 #ffffff;}.breadcrumb>li>.divider{padding:0 5px;color:#ccc;}
.breadcrumb>.active{color:#999999;}
.pagination{margin:20px 0;}
.pagination ul{display:inline-block;*display:inline;*zoom:1;margin-left:0;margin-bottom:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);}
.pagination ul>li{display:inline;}
.pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#ffffff;border:1px solid #dddddd;border-left-width:0;}
.pagination ul>li>a:hover,.pagination ul>li>a:focus,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5;}
.pagination ul>.active>a,.pagination ul>.active>span{color:#999999;cursor:default;}
.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover,.pagination ul>.disabled>a:focus{color:#999999;background-color:transparent;cursor:default;}
.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}
.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;}
.pagination-centered{text-align:center;}
.pagination-right{text-align:right;}
.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:16.25px;}
.pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;}
.pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px;}
.pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-top-left-radius:3px;-moz-border-radius-topleft:3px;border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;-moz-border-radius-bottomleft:3px;border-bottom-left-radius:3px;}
.pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;-moz-border-radius-topright:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;-moz-border-radius-bottomright:3px;border-bottom-right-radius:3px;}
.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.049999999999999px;}
.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:9.75px;}
.pager{margin:20px 0;list-style:none;text-align:center;*zoom:1;}.pager:before,.pager:after{display:table;content:"";line-height:0;}
.pager:after{clear:both;}
.pager:before,.pager:after{display:table;content:"";line-height:0;}
.pager:after{clear:both;}
.pager li{display:inline;}
.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;}
.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#f5f5f5;}
.pager .next>a,.pager .next>span{float:right;}
.pager .previous>a,.pager .previous>span{float:left;}
.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999999;background-color:#fff;cursor:default;}
.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000;}.modal-backdrop.fade{opacity:0;}
.modal-backdrop,.modal-backdrop.fade.in{opacity:0.8;filter:alpha(opacity=80);}
.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#ffffff;border:1px solid #999;border:1px solid rgba(0, 0, 0, 0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;outline:none;}.modal.fade{-webkit-transition:opacity .3s linear, top .3s ease-out;-moz-transition:opacity .3s linear, top .3s ease-out;-o-transition:opacity .3s linear, top .3s ease-out;transition:opacity .3s linear, top .3s ease-out;top:-25%;}
.modal.fade.in{top:10%;}
.modal-header{padding:9px 15px;border-bottom:1px solid #eee;}.modal-header .close{margin-top:2px;}
.modal-header h3{margin:0;line-height:30px;}
.modal-body{position:relative;overflow-y:auto;max-height:400px;padding:15px;}
.modal-form{margin-bottom:0;}
.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;*zoom:1;}.modal-footer:before,.modal-footer:after{display:table;content:"";line-height:0;}
.modal-footer:after{clear:both;}
.modal-footer:before,.modal-footer:after{display:table;content:"";line-height:0;}
.modal-footer:after{clear:both;}
.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0;}
.modal-footer .btn-group .btn+.btn{margin-left:-1px;}
.modal-footer .btn-block+.btn-block{margin-left:0;}
.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:11px;line-height:1.4;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.8;filter:alpha(opacity=80);}
.tooltip.top{margin-top:-3px;padding:5px 0;}
.tooltip.right{margin-left:3px;padding:0 5px;}
.tooltip.bottom{margin-top:3px;padding:5px 0;}
.tooltip.left{margin-left:-3px;padding:0 5px;}
.tooltip-inner{max-width:200px;padding:8px;color:#ffffff;text-align:center;text-decoration:none;background-color:#000000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid;}
.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000;}
.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000;}
.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000;}
.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000;}
.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#ffffff;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);white-space:normal;}.popover.top{margin-top:-10px;}
.popover.right{margin-left:10px;}
.popover.bottom{margin-top:10px;}
.popover.left{margin-left:-10px;}
.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;}.popover-title:empty{display:none;}
.popover-content{padding:9px 14px;}
.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid;}
.popover .arrow{border-width:11px;}
.popover .arrow:after{border-width:10px;content:"";}
.popover.top .arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0, 0, 0, 0.25);bottom:-11px;}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff;}
.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0, 0, 0, 0.25);}.popover.right .arrow:after{left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff;}
.popover.bottom .arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0, 0, 0, 0.25);top:-11px;}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff;}
.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0, 0, 0, 0.25);}.popover.left .arrow:after{right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px;}
.thumbnails{margin-left:-20px;list-style:none;*zoom:1;}.thumbnails:before,.thumbnails:after{display:table;content:"";line-height:0;}
.thumbnails:after{clear:both;}
.thumbnails:before,.thumbnails:after{display:table;content:"";line-height:0;}
.thumbnails:after{clear:both;}
.row-fluid .thumbnails{margin-left:0;}
.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px;}
.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;}
a.thumbnail:hover,a.thumbnail:focus{border-color:#0088cc;-webkit-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);-moz-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);}
.thumbnail>img{display:block;max-width:100%;margin-left:auto;margin-right:auto;}
.thumbnail .caption{padding:9px;color:#555555;}
.media,.media-body{overflow:hidden;*overflow:visible;zoom:1;}
.media,.media .media{margin-top:15px;}
.media:first-child{margin-top:0;}
.media-object{display:block;}
.media-heading{margin:0 0 5px;}
.media>.pull-left{margin-right:10px;}
.media>.pull-right{margin-left:10px;}
.media-list{margin-left:0;list-style:none;}
.label,.badge{display:inline-block;padding:2px 4px;font-size:10.998px;font-weight:bold;line-height:14px;color:#ffffff;vertical-align:baseline;white-space:nowrap;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#999999;}
.label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
.badge{padding-left:9px;padding-right:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px;}
.label:empty,.badge:empty{display:none;}
a.label:hover,a.label:focus,a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer;}
.label-important,.badge-important{background-color:#b94a48;}
.label-important[href],.badge-important[href]{background-color:#953b39;}
.label-warning,.badge-warning{background-color:#f89406;}
.label-warning[href],.badge-warning[href]{background-color:#c67605;}
.label-success,.badge-success{background-color:#468847;}
.label-success[href],.badge-success[href]{background-color:#356635;}
.label-info,.badge-info{background-color:#3a87ad;}
.label-info[href],.badge-info[href]{background-color:#2d6987;}
.label-inverse,.badge-inverse{background-color:#333333;}
.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a;}
.btn .label,.btn .badge{position:relative;top:-1px;}
.btn-mini .label,.btn-mini .badge{top:0;}
@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-o-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));background-image:-webkit-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-o-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:linear-gradient(to bottom, #f5f5f5, #f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
.progress .bar{width:0%;height:100%;color:#ffffff;float:left;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top, #149bdf, #0480be);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));background-image:-webkit-linear-gradient(top, #149bdf, #0480be);background-image:-o-linear-gradient(top, #149bdf, #0480be);background-image:linear-gradient(to bottom, #149bdf, #0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width 0.6s ease;-moz-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease;}
.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);}
.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px;}
.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite;}
.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(to bottom, #ee5f5b, #c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);}
.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(to bottom, #62c462, #57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);}
.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top, #5bc0de, #339bb9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));background-image:-webkit-linear-gradient(top, #5bc0de, #339bb9);background-image:-o-linear-gradient(top, #5bc0de, #339bb9);background-image:linear-gradient(to bottom, #5bc0de, #339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);}
.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
.progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(to bottom, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);}
.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
.accordion{margin-bottom:20px;}
.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
.accordion-heading{border-bottom:0;}
.accordion-heading .accordion-toggle{display:block;padding:8px 15px;}
.accordion-toggle{cursor:pointer;}
.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5;}
.carousel{position:relative;margin-bottom:20px;line-height:1;}
.carousel-inner{overflow:hidden;width:100%;position:relative;}
.carousel-inner>.item{display:none;position:relative;-webkit-transition:0.6s ease-in-out left;-moz-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left;}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;line-height:1;}
.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block;}
.carousel-inner>.active{left:0;}
.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%;}
.carousel-inner>.next{left:100%;}
.carousel-inner>.prev{left:-100%;}
.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0;}
.carousel-inner>.active.left{left:-100%;}
.carousel-inner>.active.right{left:100%;}
.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#ffffff;text-align:center;background:#222222;border:3px solid #ffffff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:0.5;filter:alpha(opacity=50);}.carousel-control.right{left:auto;right:15px;}
.carousel-control:hover,.carousel-control:focus{color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90);}
.carousel-indicators{position:absolute;top:15px;right:15px;z-index:5;margin:0;list-style:none;}.carousel-indicators li{display:block;float:left;width:10px;height:10px;margin-left:5px;text-indent:-999px;background-color:#ccc;background-color:rgba(255, 255, 255, 0.25);border-radius:5px;}
.carousel-indicators .active{background-color:#fff;}
.carousel-caption{position:absolute;left:0;right:0;bottom:0;padding:15px;background:#333333;background:rgba(0, 0, 0, 0.75);}
.carousel-caption h4,.carousel-caption p{color:#ffffff;line-height:20px;}
.carousel-caption h4{margin:0 0 5px;}
.carousel-caption p{margin-bottom:0;}
.hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eeeeee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;color:inherit;letter-spacing:-1px;}
.hero-unit li{line-height:30px;}
.pull-right{float:right;}
.pull-left{float:left;}
.hide{display:none;}
.show{display:block;}
.invisible{visibility:hidden;}
.affix{position:fixed;}
.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;}
.clearfix:after{clear:both;}
.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;}
.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}
@-ms-viewport{width:device-width;}.hidden{display:none;visibility:hidden;}
.visible-phone{display:none !important;}
.visible-tablet{display:none !important;}
.hidden-desktop{display:none !important;}
.visible-desktop{display:inherit !important;}
@media (min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit !important;} .visible-desktop{display:none !important ;} .visible-tablet{display:inherit !important;} .hidden-tablet{display:none !important;}}@media (max-width:767px){.hidden-desktop{display:inherit !important;} .visible-desktop{display:none !important;} .visible-phone{display:inherit !important;} .hidden-phone{display:none !important;}}.visible-print{display:none !important;}
@media print{.visible-print{display:inherit !important;} .hidden-print{display:none !important;}}@media (min-width:1200px){.row{margin-left:-30px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} .row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} [class*="span"]{float:left;min-height:1px;margin-left:30px;} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px;} .span12{width:1170px;} .span11{width:1070px;} .span10{width:970px;} .span9{width:870px;} .span8{width:770px;} .span7{width:670px;} .span6{width:570px;} .span5{width:470px;} .span4{width:370px;} .span3{width:270px;} .span2{width:170px;} .span1{width:70px;} .offset12{margin-left:1230px;} .offset11{margin-left:1130px;} .offset10{margin-left:1030px;} .offset9{margin-left:930px;} .offset8{margin-left:830px;} .offset7{margin-left:730px;} .offset6{margin-left:630px;} .offset5{margin-left:530px;} .offset4{margin-left:430px;} .offset3{margin-left:330px;} .offset2{margin-left:230px;} .offset1{margin-left:130px;} .row{margin-left:-30px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} .row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} [class*="span"]{float:left;min-height:1px;margin-left:30px;} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px;} .span12{width:1170px;} .span11{width:1070px;} .span10{width:970px;} .span9{width:870px;} .span8{width:770px;} .span7{width:670px;} .span6{width:570px;} .span5{width:470px;} .span4{width:370px;} .span3{width:270px;} .span2{width:170px;} .span1{width:70px;} .offset12{margin-left:1230px;} .offset11{margin-left:1130px;} .offset10{margin-left:1030px;} .offset9{margin-left:930px;} .offset8{margin-left:830px;} .offset7{margin-left:730px;} .offset6{margin-left:630px;} .offset5{margin-left:530px;} .offset4{margin-left:430px;} .offset3{margin-left:330px;} .offset2{margin-left:230px;} .offset1{margin-left:130px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;} .row-fluid [class*="span"]:first-child{margin-left:0;} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%;} .row-fluid .span12{width:100%;*width:99.94680851063829%;} .row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%;} .row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%;} .row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%;} .row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%;} .row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%;} .row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%;} .row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%;} .row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%;} .row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%;} .row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%;} .row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%;} .row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%;} .row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%;} .row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%;} .row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%;} .row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%;} .row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%;} .row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%;} .row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%;} .row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%;} .row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%;} .row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%;} .row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%;} .row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%;} .row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%;} .row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%;} .row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%;} .row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%;} .row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%;} .row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%;} .row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%;} .row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%;} .row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%;} .row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%;} .row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;} .row-fluid [class*="span"]:first-child{margin-left:0;} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%;} .row-fluid .span12{width:100%;*width:99.94680851063829%;} .row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%;} .row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%;} .row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%;} .row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%;} .row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%;} .row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%;} .row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%;} .row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%;} .row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%;} .row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%;} .row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%;} .row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%;} .row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%;} .row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%;} .row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%;} .row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%;} .row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%;} .row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%;} .row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%;} .row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%;} .row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%;} .row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%;} .row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%;} .row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%;} .row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%;} .row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%;} .row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%;} .row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%;} .row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%;} .row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%;} .row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%;} .row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%;} .row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%;} .row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%;} .row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%;} input,textarea,.uneditable-input{margin-left:0;} .controls-row [class*="span"]+[class*="span"]{margin-left:30px;} input.span12,textarea.span12,.uneditable-input.span12{width:1156px;} input.span11,textarea.span11,.uneditable-input.span11{width:1056px;} input.span10,textarea.span10,.uneditable-input.span10{width:956px;} input.span9,textarea.span9,.uneditable-input.span9{width:856px;} input.span8,textarea.span8,.uneditable-input.span8{width:756px;} input.span7,textarea.span7,.uneditable-input.span7{width:656px;} input.span6,textarea.span6,.uneditable-input.span6{width:556px;} input.span5,textarea.span5,.uneditable-input.span5{width:456px;} input.span4,textarea.span4,.uneditable-input.span4{width:356px;} input.span3,textarea.span3,.uneditable-input.span3{width:256px;} input.span2,textarea.span2,.uneditable-input.span2{width:156px;} input.span1,textarea.span1,.uneditable-input.span1{width:56px;} input,textarea,.uneditable-input{margin-left:0;} .controls-row [class*="span"]+[class*="span"]{margin-left:30px;} input.span12,textarea.span12,.uneditable-input.span12{width:1156px;} input.span11,textarea.span11,.uneditable-input.span11{width:1056px;} input.span10,textarea.span10,.uneditable-input.span10{width:956px;} input.span9,textarea.span9,.uneditable-input.span9{width:856px;} input.span8,textarea.span8,.uneditable-input.span8{width:756px;} input.span7,textarea.span7,.uneditable-input.span7{width:656px;} input.span6,textarea.span6,.uneditable-input.span6{width:556px;} input.span5,textarea.span5,.uneditable-input.span5{width:456px;} input.span4,textarea.span4,.uneditable-input.span4{width:356px;} input.span3,textarea.span3,.uneditable-input.span3{width:256px;} input.span2,textarea.span2,.uneditable-input.span2{width:156px;} input.span1,textarea.span1,.uneditable-input.span1{width:56px;} .thumbnails{margin-left:-30px;} .thumbnails>li{margin-left:30px;} .row-fluid .thumbnails{margin-left:0;}}@media (min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} .row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} [class*="span"]{float:left;min-height:1px;margin-left:20px;} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px;} .span12{width:724px;} .span11{width:662px;} .span10{width:600px;} .span9{width:538px;} .span8{width:476px;} .span7{width:414px;} .span6{width:352px;} .span5{width:290px;} .span4{width:228px;} .span3{width:166px;} .span2{width:104px;} .span1{width:42px;} .offset12{margin-left:764px;} .offset11{margin-left:702px;} .offset10{margin-left:640px;} .offset9{margin-left:578px;} .offset8{margin-left:516px;} .offset7{margin-left:454px;} .offset6{margin-left:392px;} .offset5{margin-left:330px;} .offset4{margin-left:268px;} .offset3{margin-left:206px;} .offset2{margin-left:144px;} .offset1{margin-left:82px;} .row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} .row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} [class*="span"]{float:left;min-height:1px;margin-left:20px;} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px;} .span12{width:724px;} .span11{width:662px;} .span10{width:600px;} .span9{width:538px;} .span8{width:476px;} .span7{width:414px;} .span6{width:352px;} .span5{width:290px;} .span4{width:228px;} .span3{width:166px;} .span2{width:104px;} .span1{width:42px;} .offset12{margin-left:764px;} .offset11{margin-left:702px;} .offset10{margin-left:640px;} .offset9{margin-left:578px;} .offset8{margin-left:516px;} .offset7{margin-left:454px;} .offset6{margin-left:392px;} .offset5{margin-left:330px;} .offset4{margin-left:268px;} .offset3{margin-left:206px;} .offset2{margin-left:144px;} .offset1{margin-left:82px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;} .row-fluid [class*="span"]:first-child{margin-left:0;} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%;} .row-fluid .span12{width:100%;*width:99.94680851063829%;} .row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%;} .row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%;} .row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%;} .row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%;} .row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%;} .row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%;} .row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%;} .row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%;} .row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%;} .row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%;} .row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%;} .row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%;} .row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%;} .row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%;} .row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%;} .row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%;} .row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%;} .row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%;} .row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%;} .row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%;} .row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%;} .row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%;} .row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%;} .row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%;} .row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%;} .row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%;} .row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%;} .row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%;} .row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%;} .row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%;} .row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%;} .row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%;} .row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%;} .row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%;} .row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;} .row-fluid [class*="span"]:first-child{margin-left:0;} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%;} .row-fluid .span12{width:100%;*width:99.94680851063829%;} .row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%;} .row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%;} .row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%;} .row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%;} .row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%;} .row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%;} .row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%;} .row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%;} .row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%;} .row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%;} .row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%;} .row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%;} .row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%;} .row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%;} .row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%;} .row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%;} .row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%;} .row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%;} .row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%;} .row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%;} .row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%;} .row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%;} .row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%;} .row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%;} .row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%;} .row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%;} .row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%;} .row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%;} .row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%;} .row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%;} .row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%;} .row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%;} .row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%;} .row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%;} .row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%;} input,textarea,.uneditable-input{margin-left:0;} .controls-row [class*="span"]+[class*="span"]{margin-left:20px;} input.span12,textarea.span12,.uneditable-input.span12{width:710px;} input.span11,textarea.span11,.uneditable-input.span11{width:648px;} input.span10,textarea.span10,.uneditable-input.span10{width:586px;} input.span9,textarea.span9,.uneditable-input.span9{width:524px;} input.span8,textarea.span8,.uneditable-input.span8{width:462px;} input.span7,textarea.span7,.uneditable-input.span7{width:400px;} input.span6,textarea.span6,.uneditable-input.span6{width:338px;} input.span5,textarea.span5,.uneditable-input.span5{width:276px;} input.span4,textarea.span4,.uneditable-input.span4{width:214px;} input.span3,textarea.span3,.uneditable-input.span3{width:152px;} input.span2,textarea.span2,.uneditable-input.span2{width:90px;} input.span1,textarea.span1,.uneditable-input.span1{width:28px;} input,textarea,.uneditable-input{margin-left:0;} .controls-row [class*="span"]+[class*="span"]{margin-left:20px;} input.span12,textarea.span12,.uneditable-input.span12{width:710px;} input.span11,textarea.span11,.uneditable-input.span11{width:648px;} input.span10,textarea.span10,.uneditable-input.span10{width:586px;} input.span9,textarea.span9,.uneditable-input.span9{width:524px;} input.span8,textarea.span8,.uneditable-input.span8{width:462px;} input.span7,textarea.span7,.uneditable-input.span7{width:400px;} input.span6,textarea.span6,.uneditable-input.span6{width:338px;} input.span5,textarea.span5,.uneditable-input.span5{width:276px;} input.span4,textarea.span4,.uneditable-input.span4{width:214px;} input.span3,textarea.span3,.uneditable-input.span3{width:152px;} input.span2,textarea.span2,.uneditable-input.span2{width:90px;} input.span1,textarea.span1,.uneditable-input.span1{width:28px;}}@media (max-width:767px){body{padding-left:20px;padding-right:20px;} .navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-left:-20px;margin-right:-20px;} .container-fluid{padding:0;} .dl-horizontal dt{float:none;clear:none;width:auto;text-align:left;} .dl-horizontal dd{margin-left:0;} .container{width:auto;} .row-fluid{width:100%;} .row,.thumbnails{margin-left:0;} .thumbnails>li{float:none;margin-left:0;} [class*="span"],.uneditable-input[class*="span"],.row-fluid [class*="span"]{float:none;display:block;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} .span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} .row-fluid [class*="offset"]:first-child{margin-left:0;} .input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} .input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto;} .controls-row [class*="span"]+[class*="span"]{margin-left:0;} .modal{position:fixed;top:20px;left:20px;right:20px;width:auto;margin:0;}.modal.fade{top:-100px;} .modal.fade.in{top:20px;}}@media (max-width:480px){.nav-collapse{-webkit-transform:translate3d(0, 0, 0);} .page-header h1 small{display:block;line-height:20px;} input[type="checkbox"],input[type="radio"]{border:1px solid #ccc;} .form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left;} .form-horizontal .controls{margin-left:0;} .form-horizontal .control-list{padding-top:0;} .form-horizontal .form-actions{padding-left:10px;padding-right:10px;} .media .pull-left,.media .pull-right{float:none;display:block;margin-bottom:10px;} .media-object{margin-right:0;margin-left:0;} .modal{top:10px;left:10px;right:10px;} .modal-header .close{padding:10px;margin:-10px;} .carousel-caption{position:static;}}@media (max-width:979px){body{padding-top:0;} .navbar-fixed-top,.navbar-fixed-bottom{position:static;} .navbar-fixed-top{margin-bottom:20px;} .navbar-fixed-bottom{margin-top:20px;} .navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px;} .navbar .container{width:auto;padding:0;} .navbar .brand{padding-left:10px;padding-right:10px;margin:0 0 0 -5px;} .nav-collapse{clear:both;} .nav-collapse .nav{float:none;margin:0 0 10px;} .nav-collapse .nav>li{float:none;} .nav-collapse .nav>li>a{margin-bottom:2px;} .nav-collapse .nav>.divider-vertical{display:none;} .nav-collapse .nav .nav-header{color:#777777;text-shadow:none;} .nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777777;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} .nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} .nav-collapse .dropdown-menu li+li a{margin-bottom:2px;} .nav-collapse .nav>li>a:hover,.nav-collapse .nav>li>a:focus,.nav-collapse .dropdown-menu a:hover,.nav-collapse .dropdown-menu a:focus{background-color:#f2f2f2;} .navbar-inverse .nav-collapse .nav>li>a,.navbar-inverse .nav-collapse .dropdown-menu a{color:#999999;} .navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .nav>li>a:focus,.navbar-inverse .nav-collapse .dropdown-menu a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:focus{background-color:#111111;} .nav-collapse.in .btn-group{margin-top:5px;padding:0;} .nav-collapse .dropdown-menu{position:static;top:auto;left:auto;float:none;display:none;max-width:none;margin:0 15px;padding:0;background-color:transparent;border:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} .nav-collapse .open>.dropdown-menu{display:block;} .nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none;} .nav-collapse .dropdown-menu .divider{display:none;} .nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none;} .nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);} .navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111111;border-bottom-color:#111111;} .navbar .nav-collapse .nav.pull-right{float:none;margin-left:0;} .nav-collapse,.nav-collapse.collapse{overflow:hidden;height:0;} .navbar .btn-navbar{display:block;} .navbar-static .navbar-inner{padding-left:10px;padding-right:10px;}}@media (min-width:980px){.nav-collapse.collapse{height:auto !important;overflow:visible !important;}}@font-face{font-family:'FontAwesome';src:url('../components/font-awesome/build/assets/font-awesome/font/fontawesome-webfont.eot?v=3.1.0');src:url('../components/font-awesome/build/assets/font-awesome/font/fontawesome-webfont.eot?#iefix&v=3.1.0') format('embedded-opentype'),url('../components/font-awesome/build/assets/font-awesome/font/fontawesome-webfont.woff?v=3.1.0') format('woff'),url('../components/font-awesome/build/assets/font-awesome/font/fontawesome-webfont.ttf?v=3.1.0') format('truetype'),url('../components/font-awesome/build/assets/font-awesome/font/fontawesome-webfont.svg#fontawesomeregular?v=3.1.0') format('svg');font-weight:normal;font-style:normal;}[class^="icon-"],[class*=" icon-"]{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em;}
[class^="icon-"]:before,[class*=" icon-"]:before{text-decoration:inherit;display:inline-block;speak:none;}
.icon-large:before{vertical-align:-10%;font-size:1.3333333333333333em;}
a [class^="icon-"],a [class*=" icon-"],a [class^="icon-"]:before,a [class*=" icon-"]:before{display:inline;}
[class^="icon-"].icon-fixed-width,[class*=" icon-"].icon-fixed-width{display:inline-block;width:1.2857142857142858em;text-align:center;}[class^="icon-"].icon-fixed-width.icon-large,[class*=" icon-"].icon-fixed-width.icon-large{width:1.5714285714285714em;}
ul.icons-ul{list-style-type:none;text-indent:-0.7142857142857143em;margin-left:2.142857142857143em;}ul.icons-ul>li .icon-li{width:0.7142857142857143em;display:inline-block;text-align:center;}
[class^="icon-"].hide,[class*=" icon-"].hide{display:none;}
.icon-muted{color:#eeeeee;}
.icon-light{color:#ffffff;}
.icon-dark{color:#333333;}
.icon-border{border:solid 1px #eeeeee;padding:.2em .25em .15em;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
.icon-2x{font-size:2em;}.icon-2x.icon-border{border-width:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
.icon-3x{font-size:3em;}.icon-3x.icon-border{border-width:3px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
.icon-4x{font-size:4em;}.icon-4x.icon-border{border-width:4px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
.icon-5x{font-size:5em;}.icon-5x.icon-border{border-width:5px;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px;}
.pull-right{float:right;}
.pull-left{float:left;}
[class^="icon-"].pull-left,[class*=" icon-"].pull-left{margin-right:.3em;}
[class^="icon-"].pull-right,[class*=" icon-"].pull-right{margin-left:.3em;}
[class^="icon-"],[class*=" icon-"]{display:inline;width:auto;height:auto;line-height:normal;vertical-align:baseline;background-image:none;background-position:0% 0%;background-repeat:repeat;margin-top:0;}
.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"]{background-image:none;}
.btn [class^="icon-"].icon-large,.nav [class^="icon-"].icon-large,.btn [class*=" icon-"].icon-large,.nav [class*=" icon-"].icon-large{line-height:.9em;}
.btn [class^="icon-"].icon-spin,.nav [class^="icon-"].icon-spin,.btn [class*=" icon-"].icon-spin,.nav [class*=" icon-"].icon-spin{display:inline-block;}
.nav-tabs [class^="icon-"],.nav-pills [class^="icon-"],.nav-tabs [class*=" icon-"],.nav-pills [class*=" icon-"],.nav-tabs [class^="icon-"].icon-large,.nav-pills [class^="icon-"].icon-large,.nav-tabs [class*=" icon-"].icon-large,.nav-pills [class*=" icon-"].icon-large{line-height:.9em;}
.btn [class^="icon-"].pull-left.icon-2x,.btn [class*=" icon-"].pull-left.icon-2x,.btn [class^="icon-"].pull-right.icon-2x,.btn [class*=" icon-"].pull-right.icon-2x{margin-top:.18em;}
.btn [class^="icon-"].icon-spin.icon-large,.btn [class*=" icon-"].icon-spin.icon-large{line-height:.8em;}
.btn.btn-small [class^="icon-"].pull-left.icon-2x,.btn.btn-small [class*=" icon-"].pull-left.icon-2x,.btn.btn-small [class^="icon-"].pull-right.icon-2x,.btn.btn-small [class*=" icon-"].pull-right.icon-2x{margin-top:.25em;}
.btn.btn-large [class^="icon-"],.btn.btn-large [class*=" icon-"]{margin-top:0;}.btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x,.btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-top:.05em;}
.btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x{margin-right:.2em;}
.btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-left:.2em;}
.icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:-35%;}.icon-stack [class^="icon-"],.icon-stack [class*=" icon-"]{display:block;text-align:center;position:absolute;width:100%;height:100%;font-size:1em;line-height:inherit;*line-height:2em;}
.icon-stack .icon-stack-base{font-size:2em;*line-height:1em;}
.icon-spin{display:inline-block;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;}
@-moz-keyframes spin{0%{-moz-transform:rotate(0deg);} 100%{-moz-transform:rotate(359deg);}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);} 100%{-webkit-transform:rotate(359deg);}}@-o-keyframes spin{0%{-o-transform:rotate(0deg);} 100%{-o-transform:rotate(359deg);}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg);} 100%{-ms-transform:rotate(359deg);}}@keyframes spin{0%{transform:rotate(0deg);} 100%{transform:rotate(359deg);}}.icon-rotate-90:before{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);}
.icon-rotate-180:before{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);}
.icon-rotate-270:before{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);}
.icon-flip-horizontal:before{-webkit-transform:scale(-1, 1);-moz-transform:scale(-1, 1);-ms-transform:scale(-1, 1);-o-transform:scale(-1, 1);transform:scale(-1, 1);}
.icon-flip-vertical:before{-webkit-transform:scale(1, -1);-moz-transform:scale(1, -1);-ms-transform:scale(1, -1);-o-transform:scale(1, -1);transform:scale(1, -1);}
.icon-glass:before{content:"\f000";}
.icon-music:before{content:"\f001";}
.icon-search:before{content:"\f002";}
.icon-envelope:before{content:"\f003";}
.icon-heart:before{content:"\f004";}
.icon-star:before{content:"\f005";}
.icon-star-empty:before{content:"\f006";}
.icon-user:before{content:"\f007";}
.icon-film:before{content:"\f008";}
.icon-th-large:before{content:"\f009";}
.icon-th:before{content:"\f00a";}
.icon-th-list:before{content:"\f00b";}
.icon-ok:before{content:"\f00c";}
.icon-remove:before{content:"\f00d";}
.icon-zoom-in:before{content:"\f00e";}
.icon-zoom-out:before{content:"\f010";}
.icon-off:before{content:"\f011";}
.icon-signal:before{content:"\f012";}
.icon-cog:before{content:"\f013";}
.icon-trash:before{content:"\f014";}
.icon-home:before{content:"\f015";}
.icon-file:before{content:"\f016";}
.icon-time:before{content:"\f017";}
.icon-road:before{content:"\f018";}
.icon-download-alt:before{content:"\f019";}
.icon-download:before{content:"\f01a";}
.icon-upload:before{content:"\f01b";}
.icon-inbox:before{content:"\f01c";}
.icon-play-circle:before{content:"\f01d";}
.icon-repeat:before,.icon-rotate-right:before{content:"\f01e";}
.icon-refresh:before{content:"\f021";}
.icon-list-alt:before{content:"\f022";}
.icon-lock:before{content:"\f023";}
.icon-flag:before{content:"\f024";}
.icon-headphones:before{content:"\f025";}
.icon-volume-off:before{content:"\f026";}
.icon-volume-down:before{content:"\f027";}
.icon-volume-up:before{content:"\f028";}
.icon-qrcode:before{content:"\f029";}
.icon-barcode:before{content:"\f02a";}
.icon-tag:before{content:"\f02b";}
.icon-tags:before{content:"\f02c";}
.icon-book:before{content:"\f02d";}
.icon-bookmark:before{content:"\f02e";}
.icon-print:before{content:"\f02f";}
.icon-camera:before{content:"\f030";}
.icon-font:before{content:"\f031";}
.icon-bold:before{content:"\f032";}
.icon-italic:before{content:"\f033";}
.icon-text-height:before{content:"\f034";}
.icon-text-width:before{content:"\f035";}
.icon-align-left:before{content:"\f036";}
.icon-align-center:before{content:"\f037";}
.icon-align-right:before{content:"\f038";}
.icon-align-justify:before{content:"\f039";}
.icon-list:before{content:"\f03a";}
.icon-indent-left:before{content:"\f03b";}
.icon-indent-right:before{content:"\f03c";}
.icon-facetime-video:before{content:"\f03d";}
.icon-picture:before{content:"\f03e";}
.icon-pencil:before{content:"\f040";}
.icon-map-marker:before{content:"\f041";}
.icon-adjust:before{content:"\f042";}
.icon-tint:before{content:"\f043";}
.icon-edit:before{content:"\f044";}
.icon-share:before{content:"\f045";}
.icon-check:before{content:"\f046";}
.icon-move:before{content:"\f047";}
.icon-step-backward:before{content:"\f048";}
.icon-fast-backward:before{content:"\f049";}
.icon-backward:before{content:"\f04a";}
.icon-play:before{content:"\f04b";}
.icon-pause:before{content:"\f04c";}
.icon-stop:before{content:"\f04d";}
.icon-forward:before{content:"\f04e";}
.icon-fast-forward:before{content:"\f050";}
.icon-step-forward:before{content:"\f051";}
.icon-eject:before{content:"\f052";}
.icon-chevron-left:before{content:"\f053";}
.icon-chevron-right:before{content:"\f054";}
.icon-plus-sign:before{content:"\f055";}
.icon-minus-sign:before{content:"\f056";}
.icon-remove-sign:before{content:"\f057";}
.icon-ok-sign:before{content:"\f058";}
.icon-question-sign:before{content:"\f059";}
.icon-info-sign:before{content:"\f05a";}
.icon-screenshot:before{content:"\f05b";}
.icon-remove-circle:before{content:"\f05c";}
.icon-ok-circle:before{content:"\f05d";}
.icon-ban-circle:before{content:"\f05e";}
.icon-arrow-left:before{content:"\f060";}
.icon-arrow-right:before{content:"\f061";}
.icon-arrow-up:before{content:"\f062";}
.icon-arrow-down:before{content:"\f063";}
.icon-share-alt:before,.icon-mail-forward:before{content:"\f064";}
.icon-resize-full:before{content:"\f065";}
.icon-resize-small:before{content:"\f066";}
.icon-plus:before{content:"\f067";}
.icon-minus:before{content:"\f068";}
.icon-asterisk:before{content:"\f069";}
.icon-exclamation-sign:before{content:"\f06a";}
.icon-gift:before{content:"\f06b";}
.icon-leaf:before{content:"\f06c";}
.icon-fire:before{content:"\f06d";}
.icon-eye-open:before{content:"\f06e";}
.icon-eye-close:before{content:"\f070";}
.icon-warning-sign:before{content:"\f071";}
.icon-plane:before{content:"\f072";}
.icon-calendar:before{content:"\f073";}
.icon-random:before{content:"\f074";}
.icon-comment:before{content:"\f075";}
.icon-magnet:before{content:"\f076";}
.icon-chevron-up:before{content:"\f077";}
.icon-chevron-down:before{content:"\f078";}
.icon-retweet:before{content:"\f079";}
.icon-shopping-cart:before{content:"\f07a";}
.icon-folder-close:before{content:"\f07b";}
.icon-folder-open:before{content:"\f07c";}
.icon-resize-vertical:before{content:"\f07d";}
.icon-resize-horizontal:before{content:"\f07e";}
.icon-bar-chart:before{content:"\f080";}
.icon-twitter-sign:before{content:"\f081";}
.icon-facebook-sign:before{content:"\f082";}
.icon-camera-retro:before{content:"\f083";}
.icon-key:before{content:"\f084";}
.icon-cogs:before{content:"\f085";}
.icon-comments:before{content:"\f086";}
.icon-thumbs-up:before{content:"\f087";}
.icon-thumbs-down:before{content:"\f088";}
.icon-star-half:before{content:"\f089";}
.icon-heart-empty:before{content:"\f08a";}
.icon-signout:before{content:"\f08b";}
.icon-linkedin-sign:before{content:"\f08c";}
.icon-pushpin:before{content:"\f08d";}
.icon-external-link:before{content:"\f08e";}
.icon-signin:before{content:"\f090";}
.icon-trophy:before{content:"\f091";}
.icon-github-sign:before{content:"\f092";}
.icon-upload-alt:before{content:"\f093";}
.icon-lemon:before{content:"\f094";}
.icon-phone:before{content:"\f095";}
.icon-check-empty:before{content:"\f096";}
.icon-bookmark-empty:before{content:"\f097";}
.icon-phone-sign:before{content:"\f098";}
.icon-twitter:before{content:"\f099";}
.icon-facebook:before{content:"\f09a";}
.icon-github:before{content:"\f09b";}
.icon-unlock:before{content:"\f09c";}
.icon-credit-card:before{content:"\f09d";}
.icon-rss:before{content:"\f09e";}
.icon-hdd:before{content:"\f0a0";}
.icon-bullhorn:before{content:"\f0a1";}
.icon-bell:before{content:"\f0a2";}
.icon-certificate:before{content:"\f0a3";}
.icon-hand-right:before{content:"\f0a4";}
.icon-hand-left:before{content:"\f0a5";}
.icon-hand-up:before{content:"\f0a6";}
.icon-hand-down:before{content:"\f0a7";}
.icon-circle-arrow-left:before{content:"\f0a8";}
.icon-circle-arrow-right:before{content:"\f0a9";}
.icon-circle-arrow-up:before{content:"\f0aa";}
.icon-circle-arrow-down:before{content:"\f0ab";}
.icon-globe:before{content:"\f0ac";}
.icon-wrench:before{content:"\f0ad";}
.icon-tasks:before{content:"\f0ae";}
.icon-filter:before{content:"\f0b0";}
.icon-briefcase:before{content:"\f0b1";}
.icon-fullscreen:before{content:"\f0b2";}
.icon-group:before{content:"\f0c0";}
.icon-link:before{content:"\f0c1";}
.icon-cloud:before{content:"\f0c2";}
.icon-beaker:before{content:"\f0c3";}
.icon-cut:before{content:"\f0c4";}
.icon-copy:before{content:"\f0c5";}
.icon-paper-clip:before{content:"\f0c6";}
.icon-save:before{content:"\f0c7";}
.icon-sign-blank:before{content:"\f0c8";}
.icon-reorder:before{content:"\f0c9";}
.icon-list-ul:before{content:"\f0ca";}
.icon-list-ol:before{content:"\f0cb";}
.icon-strikethrough:before{content:"\f0cc";}
.icon-underline:before{content:"\f0cd";}
.icon-table:before{content:"\f0ce";}
.icon-magic:before{content:"\f0d0";}
.icon-truck:before{content:"\f0d1";}
.icon-pinterest:before{content:"\f0d2";}
.icon-pinterest-sign:before{content:"\f0d3";}
.icon-google-plus-sign:before{content:"\f0d4";}
.icon-google-plus:before{content:"\f0d5";}
.icon-money:before{content:"\f0d6";}
.icon-caret-down:before{content:"\f0d7";}
.icon-caret-up:before{content:"\f0d8";}
.icon-caret-left:before{content:"\f0d9";}
.icon-caret-right:before{content:"\f0da";}
.icon-columns:before{content:"\f0db";}
.icon-sort:before{content:"\f0dc";}
.icon-sort-down:before{content:"\f0dd";}
.icon-sort-up:before{content:"\f0de";}
.icon-envelope-alt:before{content:"\f0e0";}
.icon-linkedin:before{content:"\f0e1";}
.icon-undo:before,.icon-rotate-left:before{content:"\f0e2";}
.icon-legal:before{content:"\f0e3";}
.icon-dashboard:before{content:"\f0e4";}
.icon-comment-alt:before{content:"\f0e5";}
.icon-comments-alt:before{content:"\f0e6";}
.icon-bolt:before{content:"\f0e7";}
.icon-sitemap:before{content:"\f0e8";}
.icon-umbrella:before{content:"\f0e9";}
.icon-paste:before{content:"\f0ea";}
.icon-lightbulb:before{content:"\f0eb";}
.icon-exchange:before{content:"\f0ec";}
.icon-cloud-download:before{content:"\f0ed";}
.icon-cloud-upload:before{content:"\f0ee";}
.icon-user-md:before{content:"\f0f0";}
.icon-stethoscope:before{content:"\f0f1";}
.icon-suitcase:before{content:"\f0f2";}
.icon-bell-alt:before{content:"\f0f3";}
.icon-coffee:before{content:"\f0f4";}
.icon-food:before{content:"\f0f5";}
.icon-file-alt:before{content:"\f0f6";}
.icon-building:before{content:"\f0f7";}
.icon-hospital:before{content:"\f0f8";}
.icon-ambulance:before{content:"\f0f9";}
.icon-medkit:before{content:"\f0fa";}
.icon-fighter-jet:before{content:"\f0fb";}
.icon-beer:before{content:"\f0fc";}
.icon-h-sign:before{content:"\f0fd";}
.icon-plus-sign-alt:before{content:"\f0fe";}
.icon-double-angle-left:before{content:"\f100";}
.icon-double-angle-right:before{content:"\f101";}
.icon-double-angle-up:before{content:"\f102";}
.icon-double-angle-down:before{content:"\f103";}
.icon-angle-left:before{content:"\f104";}
.icon-angle-right:before{content:"\f105";}
.icon-angle-up:before{content:"\f106";}
.icon-angle-down:before{content:"\f107";}
.icon-desktop:before{content:"\f108";}
.icon-laptop:before{content:"\f109";}
.icon-tablet:before{content:"\f10a";}
.icon-mobile-phone:before{content:"\f10b";}
.icon-circle-blank:before{content:"\f10c";}
.icon-quote-left:before{content:"\f10d";}
.icon-quote-right:before{content:"\f10e";}
.icon-spinner:before{content:"\f110";}
.icon-circle:before{content:"\f111";}
.icon-reply:before,.icon-mail-reply:before{content:"\f112";}
.icon-folder-close-alt:before{content:"\f114";}
.icon-folder-open-alt:before{content:"\f115";}
.icon-expand-alt:before{content:"\f116";}
.icon-collapse-alt:before{content:"\f117";}
.icon-smile:before{content:"\f118";}
.icon-frown:before{content:"\f119";}
.icon-meh:before{content:"\f11a";}
.icon-gamepad:before{content:"\f11b";}
.icon-keyboard:before{content:"\f11c";}
.icon-flag-alt:before{content:"\f11d";}
.icon-flag-checkered:before{content:"\f11e";}
.icon-terminal:before{content:"\f120";}
.icon-code:before{content:"\f121";}
.icon-reply-all:before{content:"\f122";}
.icon-mail-reply-all:before{content:"\f122";}
.icon-star-half-full:before,.icon-star-half-empty:before{content:"\f123";}
.icon-location-arrow:before{content:"\f124";}
.icon-crop:before{content:"\f125";}
.icon-code-fork:before{content:"\f126";}
.icon-unlink:before{content:"\f127";}
.icon-question:before{content:"\f128";}
.icon-info:before{content:"\f129";}
.icon-exclamation:before{content:"\f12a";}
.icon-superscript:before{content:"\f12b";}
.icon-subscript:before{content:"\f12c";}
.icon-eraser:before{content:"\f12d";}
.icon-puzzle-piece:before{content:"\f12e";}
.icon-microphone:before{content:"\f130";}
.icon-microphone-off:before{content:"\f131";}
.icon-shield:before{content:"\f132";}
.icon-calendar-empty:before{content:"\f133";}
.icon-fire-extinguisher:before{content:"\f134";}
.icon-rocket:before{content:"\f135";}
.icon-maxcdn:before{content:"\f136";}
.icon-chevron-sign-left:before{content:"\f137";}
.icon-chevron-sign-right:before{content:"\f138";}
.icon-chevron-sign-up:before{content:"\f139";}
.icon-chevron-sign-down:before{content:"\f13a";}
.icon-html5:before{content:"\f13b";}
.icon-css3:before{content:"\f13c";}
.icon-anchor:before{content:"\f13d";}
.icon-unlock-alt:before{content:"\f13e";}
.icon-bullseye:before{content:"\f140";}
.icon-ellipsis-horizontal:before{content:"\f141";}
.icon-ellipsis-vertical:before{content:"\f142";}
.icon-rss-sign:before{content:"\f143";}
.icon-play-sign:before{content:"\f144";}
.icon-ticket:before{content:"\f145";}
.icon-minus-sign-alt:before{content:"\f146";}
.icon-check-minus:before{content:"\f147";}
.icon-level-up:before{content:"\f148";}
.icon-level-down:before{content:"\f149";}
.icon-check-sign:before{content:"\f14a";}
.icon-edit-sign:before{content:"\f14b";}
.icon-external-link-sign:before{content:"\f14c";}
.icon-share-sign:before{content:"\f14d";}
.border-box-sizing{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;}
.corner-all{border-radius:4px;}
.hbox{display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;}
.hbox>*{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;}
.vbox{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;}
.vbox>*{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;}
.reverse{-webkit-box-direction:reverse;-moz-box-direction:reverse;box-direction:reverse;}
.box-flex0{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;}
.box-flex1{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;}
.box-flex{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;}
.box-flex2{-webkit-box-flex:2;-moz-box-flex:2;box-flex:2;}
.box-group1{-webkit-box-flex-group:1;-moz-box-flex-group:1;box-flex-group:1;}
.box-group2{-webkit-box-flex-group:2;-moz-box-flex-group:2;box-flex-group:2;}
.start{-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;}
.end{-webkit-box-pack:end;-moz-box-pack:end;box-pack:end;}
.center{-webkit-box-pack:center;-moz-box-pack:center;box-pack:center;}
body{background-color:white;position:absolute;left:0px;right:0px;top:0px;bottom:0px;overflow:visible;}
div#header{display:none;}
#ipython_notebook{padding-left:16px;}
#noscript{width:auto;padding-top:16px;padding-bottom:16px;text-align:center;font-size:22px;color:red;font-weight:bold;}
#ipython_notebook img{font-family:Verdana,"Helvetica Neue",Arial,Helvetica,Geneva,sans-serif;height:24px;text-decoration:none;color:black;}
#site{width:100%;display:none;}
.ui-button .ui-button-text{padding:0.2em 0.8em;font-size:77%;}
input.ui-button{padding:0.3em 0.9em;}
.navbar span{margin-top:3px;}
span#login_widget{float:right;}
.nav-header{text-transform:none;}
.navbar-nobg{background-color:transparent;background-image:none;}
#header>span{margin-top:10px;}
.modal-body{max-height:500px;}
.center-nav{display:inline-block;margin-bottom:-4px;}
.alternate_upload{background-color:none;display:inline;}
.alternate_upload.form{padding:0;margin:0;}
.alternate_upload input.fileinput{background-color:red;position:relative;opacity:0;z-index:2;width:295px;margin-left:163px;cursor:pointer;}
.list_toolbar{padding:5px;height:25px;line-height:25px;}
.toolbar_info{float:left;}
.toolbar_buttons{float:right;}
.list_header{font-weight:bold;}
.list_container{margin-top:16px;margin-bottom:16px;border:1px solid #ababab;border-radius:4px;}
.list_container>div{border-bottom:1px solid #ababab;}.list_container>div:hover .list-item{background-color:red;}
.list_container>div:last-child{border:none;}
.list_item:hover .list_item{background-color:#ddd;}
.list_container>div>span,.list_container>div>div{padding:8px;}
.list_item a{text-decoration:none;}
input.nbname_input{height:15px;}
.highlight_text{color:blue;}
#project_name>.breadcrumb{padding:0px;margin-bottom:0px;background-color:transparent;font-weight:bold;}
input.engine_num_input{height:20px;margin-bottom:2px;padding-top:0;padding-bottom:0;width:60px;}
.ansibold{font-weight:bold;}
.ansiblack{color:black;}
.ansired{color:darkred;}
.ansigreen{color:darkgreen;}
.ansiyellow{color:brown;}
.ansiblue{color:darkblue;}
.ansipurple{color:darkviolet;}
.ansicyan{color:steelblue;}
.ansigray{color:gray;}
.ansibgblack{background-color:black;}
.ansibgred{background-color:red;}
.ansibggreen{background-color:green;}
.ansibgyellow{background-color:yellow;}
.ansibgblue{background-color:blue;}
.ansibgpurple{background-color:magenta;}
.ansibgcyan{background-color:cyan;}
.ansibggray{background-color:gray;}
div.cell{border:1px solid transparent;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;padding:5px 5px 5px 0px;margin:2px 0px 2px 7px;outline:none;}div.cell.selected{border-radius:4px;border:thin #ababab solid;}
div.prompt{width:11ex;padding:0.4em;margin:0px;font-family:monospace;text-align:right;line-height:1.231em;}
.celltoolbar{border:thin solid #CFCFCF;border-bottom:none;background:#EEE;border-top-right-radius:3px;border-top-left-radius:3px;width:100%;-webkit-box-pack:end;height:22px;}
.no_input_radius{border-top-right-radius:0px;border-top-left-radius:0px;}
.text_cell .ctb_prompt{display:none;}
.code_cell .ctb_prompt{display:block;}
.ctb_hideshow{display:none;vertical-align:bottom;padding-right:2px;}
.celltoolbar>div{padding-top:0px;}
.ctb_area{margin:0;padding:0;width:100%;}
.ctb_show.ctb_hideshow,.ctb_show .ctb_hideshow{display:block;}
.ctb_show .input_area,.ctb_show .ctb_hideshow+div.text_cell_input{border-top-right-radius:0px;border-top-left-radius:0px;}
.ctb_show>.celltoolbar{border-bottom-right-radius:0px;border-bottom-left-radius:0px;}
.button_container{margin-top:0;margin-bottom:0;}
.ui-button{min-width:30px;}
.celltoolbar .button_container select{margin:10px;margin-top:1px;margin-bottom:0px;padding:0;font-size:87%;width:auto;display:inline-block;height:18px;line-height:18px;vertical-align:top;}
.celltoolbar label{display:inline-block;height:15px;line-height:15px;vertical-align:top;}
.celltoolbar label span{font-size:85%;}
.celltoolbar input[type=checkbox]{margin:0px;margin-left:4px;margin-right:4px;}
.celltoolbar .ui-button{border:none;vertical-align:top;height:20px;}
div.input{page-break-inside:avoid;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;}
div.input_area{border:1px solid #cfcfcf;border-radius:4px;background:#f7f7f7;}
div.input_prompt{color:navy;border-top:1px solid transparent;}
div.output_wrapper{margin-top:5px;position:relative;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;}
div.output_scroll{height:24em;width:100%;overflow:auto;border-radius:4px;-webkit-box-shadow:inset 0 2px 8px rgba(0, 0, 0, 0.8);-moz-box-shadow:inset 0 2px 8px rgba(0, 0, 0, 0.8);box-shadow:inset 0 2px 8px rgba(0, 0, 0, 0.8);}
div.output_collapsed{margin:0px;padding:0px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;}
div.out_prompt_overlay{height:100%;padding:0px 0.4em;position:absolute;border-radius:4px;}
div.out_prompt_overlay:hover{-webkit-box-shadow:inset 0 0 1px #000000;-moz-box-shadow:inset 0 0 1px #000000;box-shadow:inset 0 0 1px #000000;background:rgba(240, 240, 240, 0.5);}
div.output_prompt{color:darkred;}
.CodeMirror{line-height:1.231em;height:auto;background:none;}
.CodeMirror-scroll{overflow-y:hidden;overflow-x:auto;}
@-moz-document {.CodeMirror-scroll{overflow-x:hidden;}}.CodeMirror-lines{padding:0.4em;}
.CodeMirror-linenumber{padding:0 8px 0 4px;}
.CodeMirror-gutters{border-bottom-left-radius:4px;border-top-left-radius:4px;}
.CodeMirror pre{padding:0;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
.completions{position:absolute;z-index:10;overflow:hidden;border:1px solid #ababab;border-radius:4px;-webkit-box-shadow:0px 6px 10px -1px #adadad;-moz-box-shadow:0px 6px 10px -1px #adadad;box-shadow:0px 6px 10px -1px #adadad;}
.completions select{background:white;outline:none;border:none;padding:0px;margin:0px;overflow:auto;font-family:monospace;font-size:110%;color:#000000;}
.completions select option.context{color:#0064cd;}
pre code{display:block;padding:0.5em;}
.highlight-base,pre code,pre .subst,pre .tag .title,pre .lisp .title,pre .clojure .built_in,pre .nginx .title{color:black;}
.highlight-string,pre .string,pre .constant,pre .parent,pre .tag .value,pre .rules .value,pre .rules .value .number,pre .preprocessor,pre .ruby .symbol,pre .ruby .symbol .string,pre .aggregate,pre .template_tag,pre .django .variable,pre .smalltalk .class,pre .addition,pre .flow,pre .stream,pre .bash .variable,pre .apache .tag,pre .apache .cbracket,pre .tex .command,pre .tex .special,pre .erlang_repl .function_or_atom,pre .markdown .header{color:#BA2121;}
.highlight-comment,pre .comment,pre .annotation,pre .template_comment,pre .diff .header,pre .chunk,pre .markdown .blockquote{color:#408080;font-style:italic;}
.highlight-number,pre .number,pre .date,pre .regexp,pre .literal,pre .smalltalk .symbol,pre .smalltalk .char,pre .go .constant,pre .change,pre .markdown .bullet,pre .markdown .link_url{color:#080;}
pre .label,pre .javadoc,pre .ruby .string,pre .decorator,pre .filter .argument,pre .localvars,pre .array,pre .attr_selector,pre .important,pre .pseudo,pre .pi,pre .doctype,pre .deletion,pre .envvar,pre .shebang,pre .apache .sqbracket,pre .nginx .built_in,pre .tex .formula,pre .erlang_repl .reserved,pre .prompt,pre .markdown .link_label,pre .vhdl .attribute,pre .clojure .attribute,pre .coffeescript .property{color:#8888ff;}
.highlight-keyword,pre .keyword,pre .id,pre .phpdoc,pre .aggregate,pre .css .tag,pre .javadoctag,pre .phpdoc,pre .yardoctag,pre .smalltalk .class,pre .winutils,pre .bash .variable,pre .apache .tag,pre .go .typename,pre .tex .command,pre .markdown .strong,pre .request,pre .status{color:#008000;font-weight:bold;}
.highlight-builtin,pre .built_in{color:#008000;}
pre .markdown .emphasis{font-style:italic;}
pre .nginx .built_in{font-weight:normal;}
pre .coffeescript .javascript,pre .javascript .xml,pre .tex .formula,pre .xml .javascript,pre .xml .vbscript,pre .xml .css,pre .xml .cdata{opacity:0.5;}
.cm-s-ipython span.cm-variable{color:black;}
.cm-s-ipython span.cm-keyword{color:#008000;font-weight:bold;}
.cm-s-ipython span.cm-number{color:#080;}
.cm-s-ipython span.cm-comment{color:#408080;font-style:italic;}
.cm-s-ipython span.cm-string{color:#BA2121;}
.cm-s-ipython span.cm-builtin{color:#008000;}
.cm-s-ipython span.cm-error{color:#f00;}
.cm-s-ipython span.cm-operator{color:#AA22FF;font-weight:bold;}
.cm-s-ipython span.cm-meta{color:#AA22FF;}
#menubar .navbar-inner{min-height:28px;border-top:1px;border-radius:0px 0px 4px 4px;}
#menubar .navbar{margin-bottom:8px;}
.nav-wrapper{border-bottom:1px solid #d4d4d4;}
#menubar li.dropdown{line-height:12px;}
body{background-color:#ffffff;}
body.notebook_app{overflow:hidden;}
span#notebook_name{height:1em;line-height:1em;padding:3px;border:none;font-size:146.5%;}
div#notebook_panel{margin:0px 0px 0px 0px;padding:0px;-webkit-box-shadow:0 -1px 10px rgba(0, 0, 0, 0.1);-moz-box-shadow:0 -1px 10px rgba(0, 0, 0, 0.1);box-shadow:0 -1px 10px rgba(0, 0, 0, 0.1);}
div#notebook{overflow-y:scroll;overflow-x:auto;width:100%;padding:5px 5px 15px 5px;margin:0px;border-top:1px solid #ababab;}
div.ui-widget-content{border:1px solid #ababab;outline:none;}
pre.dialog{background-color:#f7f7f7;border:1px solid #ddd;border-radius:4px;padding:0.4em;padding-left:2em;}
p.dialog{padding:0.2em;}
pre,code,kbd,samp{white-space:pre-wrap;}
#fonttest{font-family:monospace;}
p{margin-bottom:0;}
.end_space{height:200px;}
#notification_area{z-index:10;}
.notification_widget{color:#777777;padding:1px 12px;margin:2px 4px;z-index:10;border:1px solid #ccc;border-radius:4px;background:rgba(240, 240, 240, 0.5);}
div.output_area{padding:0px;page-break-inside:avoid;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;}
div.output_area pre{font-family:monospace;margin:0;padding:0;border:0;font-size:100%;vertical-align:baseline;color:black;background-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;line-height:inherit;}
div.output_subarea{padding:0.44em 0.4em 0.4em 1px;margin-left:6px;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;}
div.output_text{text-align:left;color:#000000;font-family:monospace;line-height:1.231em;}
div.output_stream{padding-top:0.0em;padding-bottom:0.0em;}
div.output_stderr{background:#fdd;}
div.output_latex{text-align:left;}
.js-error{color:darkred;}
div.raw_input{padding-top:0px;padding-bottom:0px;height:1em;line-height:1em;font-family:monospace;}
span.input_prompt{font-family:inherit;}
input.raw_input{font-family:inherit;font-size:inherit;color:inherit;width:auto;margin:-2px 0px 0px 1px;padding-left:1px;padding-top:2px;height:1em;}
p.p-space{margin-bottom:10px;}
div#pager_splitter{height:8px;}
#pager-container{position:relative;padding:15px 0px;}
div#pager{overflow:auto;display:none;}div#pager pre{font-size:13px;line-height:1.231em;color:#000000;background-color:#f7f7f7;padding:0.4em;}
.shortcut_key{display:inline-block;width:15ex;text-align:right;font-family:monospace;}
.shortcut_descr{display:inline-block;}
div.quickhelp{float:left;width:50%;}
.rendered_html{color:black;}.rendered_html em{font-style:italic;}
.rendered_html strong{font-weight:bold;}
.rendered_html u{text-decoration:underline;}
.rendered_html :link{text-decoration:underline;}
.rendered_html :visited{text-decoration:underline;}
.rendered_html h1{font-size:197%;margin:.65em 0;font-weight:bold;}
.rendered_html h2{font-size:153.9%;margin:.75em 0;font-weight:bold;}
.rendered_html h3{font-size:123.1%;margin:.85em 0;font-weight:bold;}
.rendered_html h4{font-size:100%;margin:0.95em 0;font-weight:bold;}
.rendered_html h5{font-size:85%;margin:1.5em 0;font-weight:bold;}
.rendered_html h6{font-size:77%;margin:1.65em 0;font-weight:bold;}
.rendered_html ul{list-style:disc;margin:1em 2em;}
.rendered_html ul ul{list-style:square;margin:0em 2em;}
.rendered_html ul ul ul{list-style:circle;margin:0em 2em;}
.rendered_html ol{list-style:decimal;margin:1em 2em;}
.rendered_html ol ol{list-style:upper-alpha;margin:0em 2em;}
.rendered_html ol ol ol{list-style:lower-alpha;margin:0em 2em;}
.rendered_html ol ol ol ol{list-style:lower-roman;margin:0em 2em;}
.rendered_html ol ol ol ol ol{list-style:decimal;margin:0em 2em;}
.rendered_html hr{color:black;background-color:black;}
.rendered_html pre{margin:1em 2em;}
.rendered_html pre,.rendered_html code{border:0;background-color:#ffffff;color:#000000;font-size:100%;padding:0px;}
.rendered_html blockquote{margin:1em 2em;}
.rendered_html table,.rendered_html tr,.rendered_html th,.rendered_html td{border:1px solid black;border-collapse:collapse;margin:1em 2em;}
.rendered_html td,.rendered_html th{text-align:left;vertical-align:middle;padding:4px;}
.rendered_html th{font-weight:bold;}
.rendered_html p{text-align:justify;}
.rendered_html p+p{margin-top:1em;}
span#save_widget{padding:0px 5px;margin-top:12px;}
span#checkpoint_status,span#autosave_status{font-size:small;}
@media (max-width:767px){span#save_widget{font-size:small;} span#checkpoint_status,span#autosave_status{font-size:x-small;}}@media (max-width:767px){span#checkpoint_status,span#autosave_status{display:none;}}@media (min-width:768px) and (max-width:979px){span#checkpoint_status{display:none;} span#autosave_status{font-size:x-small;}}div.text_cell{padding:5px 5px 5px 5px;}
div.text_cell_input{color:#000000;border:1px solid #cfcfcf;border-radius:4px;background:#f7f7f7;}
div.text_cell_render{outline:none;resize:none;width:inherit;border-style:none;padding:5px;color:#000000;}
a.anchor-link:link{text-decoration:none;padding:0px 20px;visibility:hidden;}
h1:hover .anchor-link,h2:hover .anchor-link,h3:hover .anchor-link,h4:hover .anchor-link,h5:hover .anchor-link,h6:hover .anchor-link{visibility:visible;}
.toolbar{padding:0px 10px;margin-top:-5px;}.toolbar select,.toolbar label{width:auto;height:26px;vertical-align:middle;margin-right:2px;margin-bottom:0px;display:inline;font-size:92%;margin-left:0.3em;margin-right:0.3em;padding:0px;padding-top:3px;}
.toolbar .btn{padding:2px 8px;}
.toolbar .btn-group{margin-top:0px;}
.toolbar-inner{border:none !important;-webkit-box-shadow:none !important;-moz-box-shadow:none !important;box-shadow:none !important;}
#maintoolbar{margin-bottom:0px;}
@-moz-keyframes fadeOut{from{opacity:1;} to{opacity:0;}}@-webkit-keyframes fadeOut{from{opacity:1;} to{opacity:0;}}@-moz-keyframes fadeIn{from{opacity:0;} to{opacity:1;}}@-webkit-keyframes fadeIn{from{opacity:0;} to{opacity:1;}}.bigtooltip{overflow:auto;height:200px;-webkit-transition-property:height;-webkit-transition-duration:500ms;-moz-transition-property:height;-moz-transition-duration:500ms;transition-property:height;transition-duration:500ms;}
.smalltooltip{-webkit-transition-property:height;-webkit-transition-duration:500ms;-moz-transition-property:height;-moz-transition-duration:500ms;transition-property:height;transition-duration:500ms;text-overflow:ellipsis;overflow:hidden;height:80px;}
.tooltipbuttons{position:absolute;padding-right:15px;top:0px;right:0px;}
.tooltiptext{padding-right:30px;}
.ipython_tooltip{max-width:700px;-webkit-animation:fadeOut 400ms;-moz-animation:fadeOut 400ms;animation:fadeOut 400ms;-webkit-animation:fadeIn 400ms;-moz-animation:fadeIn 400ms;animation:fadeIn 400ms;vertical-align:middle;background-color:#f7f7f7;overflow:visible;border:#ababab 1px solid;outline:none;padding:3px;margin:0px;padding-left:7px;font-family:monospace;min-height:50px;-moz-box-shadow:0px 6px 10px -1px #adadad;-webkit-box-shadow:0px 6px 10px -1px #adadad;box-shadow:0px 6px 10px -1px #adadad;border-radius:4px;position:absolute;z-index:2;}.ipython_tooltip a{float:right;}
.ipython_tooltip .tooltiptext pre{border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;font-size:100%;background-color:#f7f7f7;}
.pretooltiparrow{left:0px;margin:0px;top:-16px;width:40px;height:16px;overflow:hidden;position:absolute;}
.pretooltiparrow:before{background-color:#f7f7f7;border:1px #ababab solid;z-index:11;content:"";position:absolute;left:15px;top:10px;width:25px;height:25px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);}

    </style>
<style type="text/css">
    .highlight .hll { background-color: #ffffcc }
.highlight  { background: #f8f8f8; }
.highlight .c { color: #408080; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #FF0000 } /* Error */
.highlight .k { color: #008000; font-weight: bold } /* Keyword */
.highlight .o { color: #666666 } /* Operator */
.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008000 } /* Keyword.Pseudo */
.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #B00040 } /* Keyword.Type */
.highlight .m { color: #666666 } /* Literal.Number */
.highlight .s { color: #BA2121 } /* Literal.String */
.highlight .na { color: #7D9029 } /* Name.Attribute */
.highlight .nb { color: #008000 } /* Name.Builtin */
.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
.highlight .no { color: #880000 } /* Name.Constant */
.highlight .nd { color: #AA22FF } /* Name.Decorator */
.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0000FF } /* Name.Function */
.highlight .nl { color: #A0A000 } /* Name.Label */
.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #19177C } /* Name.Variable */
.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mf { color: #666666 } /* Literal.Number.Float */
.highlight .mh { color: #666666 } /* Literal.Number.Hex */
.highlight .mi { color: #666666 } /* Literal.Number.Integer */
.highlight .mo { color: #666666 } /* Literal.Number.Oct */
.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
.highlight .sc { color: #BA2121 } /* Literal.String.Char */
.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
.highlight .sx { color: #008000 } /* Literal.String.Other */
.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
.highlight .ss { color: #19177C } /* Literal.String.Symbol */
.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
.highlight .vc { color: #19177C } /* Name.Variable.Class */
.highlight .vg { color: #19177C } /* Name.Variable.Global */
.highlight .vi { color: #19177C } /* Name.Variable.Instance */
.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
    </style>


<style type="text/css">
/* Overrides of notebook CSS for static HTML export */
body {
  overflow: visible;
  padding: 8px;
}
.input_area {
  padding: 0.2em;
}

pre {
    padding: 0.2em;
    border: none;
    margin: 0px;
    font-size: 13px;
}
</style>

<!-- Custom stylesheet, it must be in the same directory as the html file -->
<link rel="stylesheet" href="custom.css">

<script src="https://c328740.ssl.cf1.rackcdn.com/mathjax/latest/MathJax.js?config=TeX-AMS_HTML" type="text/javascript"></script>
<script type="text/javascript">
init_mathjax = function() {
    if (window.MathJax) {
        // MathJax loaded
        MathJax.Hub.Config({
            tex2jax: {
                inlineMath: [ ['$','$'], ["\\(","\\)"] ],
                displayMath: [ ['$$','$$'], ["\\[","\\]"] ]
            },
            displayAlign: 'left', // Change this to 'center' to center equations.
            "HTML-CSS": {
                styles: {'.MathJax_Display': {"margin": 0}}
            }
        });
        MathJax.Hub.Queue(["Typeset",MathJax.Hub]);
    }
}
init_mathjax();
</script>
</head>
<body>

<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="What-do-Tim-O'Reilly,-Lady-Gaga,-and-Marissa-Mayer-all-have-in-common?">What do Tim O'Reilly, Lady Gaga, and Marissa Mayer all have in common?<a class="anchor-link" href="#What-do-Tim-O'Reilly,-Lady-Gaga,-and-Marissa-Mayer-all-have-in-common?">&#182;</a></h1>
</div>

<div class="text_cell_render border-box-sizing rendered_html">
<p>This IPython Notebook provides a compilation of the sample code for <a href="http://miningthesocialweb.com/">Mining the Social Web</a>'s multi-part series on exploring <a href="http://miningthesocialweb.com/category/twitter-influence/">Twitter influence</a>. The code in this notebook harvests follower IDs and the corresponding account profiles for arbitrary accounts of interest along with some initial exercises to get you busy analyzing the data. We'll applly the same &quot;Aspire, Acquire, Analyze, Summarize&quot; data science framework that has been presented in previous posts as a guide through this notebook.</p>
<p>For the educational purpose of investigating the intuition behind popularity (number of followers) as a measure of influence on Twitter with a concrete set of data, Tim O'Reilly and his followers provide the primary basis of this examination. Sample output from the analysis section of the notebook is left in place for easy review.</p>
<p>In the spirit of <em><a href="http://www.amazon.com/Freakonomics-Rev-Ed-Riddles-Modern-ebook/dp/B002VL1CLW/?tag=oreonbl-20">Freakonomics</a></em> (but mostly just for entertainment purposes), we'll also briefly juxtapose some of Tim O'Reilly's data with that of Lady Gaga to see what followers they have in common and even compute a Jaccard similarity score for them based on the followers that they have in common.</p>
<p>But a Jaccard score all by itself is no fun at all, so Marissa Mayer's data will also make a brief guest appearance so that we can make a couple of additional comparisons. The selection of Marissa Mayer seemed interesting since she's a female technologist and thus has something in common with both Tim O'Reilly and Lady Gaga (as arbitrary as that may seem.)</p>
</div>
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="Abstract">Abstract<a class="anchor-link" href="#Abstract">&#182;</a></h1>
</div>

<div class="text_cell_render border-box-sizing rendered_html">
<p>Some of the key findings that you'll learn how to reproduce and explore include:</p>
<ul>
<li>Approximately 50% of Tim O'Reilly's ~1.7 million followers are &quot;suspect&quot; in the sense that they may be inactive accounts or spam bots. Only about 15% of Marissa Mayer's followers are suspect according to the same criteria.
<ul>
<li>Although purely speculative, this difference <em>might</em> be explainable by a massive wave of spam-bots attacking popular users back in 2009 when Twitter experiences unprecedented user growth.</li>
</ul></li>
<li>Approximately 25% of Tim O'Reilly's &quot;non-suspect&quot; followers also follow Lady Gaga.</li>
<li>Lady Gaga has a higher Jaccard similarity to Tim O'Reilly than to Lady Gaga. (However, Tim O'Reilly and Marissa Mayer have a <em>much</em> higher Jaccard similarity to one another than either one of them have to Lady Gaga.)</li>
<li>The total number of followers that Tim O'Reilly, Marissa Mayer, and Lady Gaga have in common is about 25k. This figure represents about 5% of Marissa Mayer's total followers.</li>
</ul>
<p>This remainder of this IPython notebook provides the source code and fodder to reproduce these results. Visit <a href="http://MiningTheSocialWeb.com">Mining the Social Web</a> for <a href="http://wp.me/p3QiJd-4k">the corresponding blog post</a> and related content.</p>
</div>
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="1.-Aspire">1. Aspire<a class="anchor-link" href="#1.-Aspire">&#182;</a></h1>
</div>

<div class="text_cell_render border-box-sizing rendered_html">
<p>Let's aspire to investigate a few questions as part of a data science experiment:</p>
<ul>
<li>Is there a relationship between popularity and influence on Twitter?</li>
<li>How influenceable are a popular Twitter user's followers?</li>
<li>Do Tim O'Reilly, Lady Gaga, and Marissa Mayer have very many followers in common?</li>
<li>Between Tim O'Reilly, Lady Gaga, and Marissa Mayer, which pair of users has the highest Jaccard similarity based on followers?</li>
</ul>
</div>
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="2.-Acquire">2. Acquire<a class="anchor-link" href="#2.-Acquire">&#182;</a></h1>
</div>

<div class="text_cell_render border-box-sizing rendered_html">
<p>Having aspired to investigate some interesting queries, let's now acquire the data to perform this investigation.</p>
</div>
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="Data-Collection-Machinery">Data Collection Machinery<a class="anchor-link" href="#Data-Collection-Machinery">&#182;</a></h2>
</div>

<div class="text_cell_render border-box-sizing rendered_html">
<p>We can collect the IDs for all of an account's followers by adapting the following recipes from the <a href="https://rawgithub.com/ptwobrussell/Mining-the-Social-Web-2nd-Edition/master/ipynb/html/Chapter%209%20-%20Twitter%20Cookbook.html">Twitter Cookbook (Chapter 9)</a> notebook:</p>
<ul>
<li><a href="https://rawgithub.com/ptwobrussell/Mining-the-Social-Web-2nd-Edition/master/ipynb/html/Chapter%209%20-%20Twitter%20Cookbook.html#Example-1.-Accessing-Twitter's-API-for-development-purposes">Example 9-1</a>. Accessing Twitter's API for development purposes (use as-is)</li>
<li><a href="https://rawgithub.com/ptwobrussell/Mining-the-Social-Web-2nd-Edition/master/ipynb/html/Chapter%209%20-%20Twitter%20Cookbook.html#Example-7.-Saving-and-accessing-JSON-data-with-MongoDB">Example 9-7</a>. Saving and Accessing JSON Data with MongoDB (requires minor adaptations)</li>
<li><a href="https://rawgithub.com/ptwobrussell/Mining-the-Social-Web-2nd-Edition/master/ipynb/html/Chapter%209%20-%20Twitter%20Cookbook.html#Example-16.-Making-robust-Twitter-requests">Example 9-16</a>. Making robust Twitter requests (use as-is)</li>
<li><a href="https://rawgithub.com/ptwobrussell/Mining-the-Social-Web-2nd-Edition/master/ipynb/html/Chapter%209%20-%20Twitter%20Cookbook.html#Example-17.-Resolving-user-profile-information">Example 9-17</a>. Resolving user profile information (requires minor adaptations)</li>
<li><a href="https://rawgithub.com/ptwobrussell/Mining-the-Social-Web-2nd-Edition/master/ipynb/html/Chapter%209%20-%20Twitter%20Cookbook.html#Example-19.-Getting-all-friends-or-followers-for-a-user">Example 9-19</a>. Getting all friends or followers for a user (requires minor adaptations)</li>
</ul>
</div>
<div class="cell border-box-sizing code_cell vbox">
<div class="input hbox">
<div class="prompt input_prompt">
In&nbsp;[]:
</div>
<div class="input_area box-flex1">
<div class="highlight"><pre><span class="kn">from</span> <span class="nn">functools</span> <span class="kn">import</span> <span class="n">partial</span>
<span class="kn">from</span> <span class="nn">sys</span> <span class="kn">import</span> <span class="n">maxint</span>
<span class="kn">import</span> <span class="nn">sys</span>
<span class="kn">import</span> <span class="nn">time</span>
<span class="kn">from</span> <span class="nn">urllib2</span> <span class="kn">import</span> <span class="n">URLError</span>
<span class="kn">from</span> <span class="nn">httplib</span> <span class="kn">import</span> <span class="n">BadStatusLine</span>
<span class="kn">import</span> <span class="nn">json</span>
<span class="kn">import</span> <span class="nn">twitter</span> <span class="c"># pip install twitter</span>
<span class="kn">import</span> <span class="nn">pymongo</span> <span class="c"># pip install pymongo</span>


<span class="k">def</span> <span class="nf">oauth_login</span><span class="p">():</span>
    <span class="c"># XXX: Go to http://twitter.com/apps/new to create an app and get values</span>
    <span class="c"># for these credentials that you&#39;ll need to provide in place of these</span>
    <span class="c"># empty string values that are defined as placeholders.</span>
    <span class="c"># See https://dev.twitter.com/docs/auth/oauth for more information </span>
    <span class="c"># on Twitter&#39;s OAuth implementation</span>
    
    <span class="n">CONSUMER_KEY</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
    <span class="n">CONSUMER_SECRET</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
    <span class="n">OAUTH_TOKEN</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
    <span class="n">OAUTH_TOKEN_SECRET</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
        
    <span class="n">auth</span> <span class="o">=</span> <span class="n">twitter</span><span class="o">.</span><span class="n">oauth</span><span class="o">.</span><span class="n">OAuth</span><span class="p">(</span><span class="n">OAUTH_TOKEN</span><span class="p">,</span> <span class="n">OAUTH_TOKEN_SECRET</span><span class="p">,</span>
                               <span class="n">CONSUMER_KEY</span><span class="p">,</span> <span class="n">CONSUMER_SECRET</span><span class="p">)</span>
    
    <span class="n">twitter_api</span> <span class="o">=</span> <span class="n">twitter</span><span class="o">.</span><span class="n">Twitter</span><span class="p">(</span><span class="n">auth</span><span class="o">=</span><span class="n">auth</span><span class="p">)</span>
    <span class="k">return</span> <span class="n">twitter_api</span>

<span class="k">def</span> <span class="nf">make_twitter_request</span><span class="p">(</span><span class="n">twitter_api_func</span><span class="p">,</span> <span class="n">max_errors</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span> 
    
    <span class="c"># A nested helper function that handles common HTTPErrors. Return an updated value </span>
    <span class="c"># for wait_period if the problem is a 500 level error. Block until the rate limit </span>
    <span class="c"># is reset if a rate limiting issue (429 error). Returns None for 401 and 404 errors</span>
    <span class="c"># which requires special handling by the caller.</span>
    <span class="k">def</span> <span class="nf">handle_twitter_http_error</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">wait_period</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">sleep_when_rate_limited</span><span class="o">=</span><span class="bp">True</span><span class="p">):</span>
    
        <span class="k">if</span> <span class="n">wait_period</span> <span class="o">&gt;</span> <span class="mi">3600</span><span class="p">:</span> <span class="c"># Seconds</span>
            <span class="k">print</span> <span class="o">&gt;&gt;</span> <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&#39;Too many retries. Quitting.&#39;</span>
            <span class="k">raise</span> <span class="n">e</span>
    
        <span class="c"># See https://dev.twitter.com/docs/error-codes-responses for common codes</span>
    
        <span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">e</span><span class="o">.</span><span class="n">code</span> <span class="o">==</span> <span class="mi">401</span><span class="p">:</span>
            <span class="k">print</span> <span class="o">&gt;&gt;</span> <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&#39;Encountered 401 Error (Not Authorized)&#39;</span>
            <span class="k">return</span> <span class="bp">None</span>
        <span class="k">elif</span> <span class="n">e</span><span class="o">.</span><span class="n">e</span><span class="o">.</span><span class="n">code</span> <span class="o">==</span> <span class="mi">404</span><span class="p">:</span>
            <span class="k">print</span> <span class="o">&gt;&gt;</span> <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&#39;Encountered 404 Error (Not Found)&#39;</span>
            <span class="k">return</span> <span class="bp">None</span>
        <span class="k">elif</span> <span class="n">e</span><span class="o">.</span><span class="n">e</span><span class="o">.</span><span class="n">code</span> <span class="o">==</span> <span class="mi">429</span><span class="p">:</span> 
            <span class="k">print</span> <span class="o">&gt;&gt;</span> <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&#39;Encountered 429 Error (Rate Limit Exceeded)&#39;</span>
            <span class="k">if</span> <span class="n">sleep_when_rate_limited</span><span class="p">:</span>
                <span class="k">print</span> <span class="o">&gt;&gt;</span> <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Sleeping for 15 minutes, and then I&#39;ll try again...ZzZ...&quot;</span>
                <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
                <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">60</span><span class="o">*</span><span class="mi">15</span> <span class="o">+</span> <span class="mi">5</span><span class="p">)</span>
                <span class="k">print</span> <span class="o">&gt;&gt;</span> <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&#39;...ZzZ...Awake now and trying again.&#39;</span>
                <span class="k">return</span> <span class="mi">2</span>
            <span class="k">else</span><span class="p">:</span>
                <span class="k">raise</span> <span class="n">e</span> <span class="c"># Allow user to handle the rate limiting issue however they&#39;d like </span>
        <span class="k">elif</span> <span class="n">e</span><span class="o">.</span><span class="n">e</span><span class="o">.</span><span class="n">code</span> <span class="ow">in</span> <span class="p">(</span><span class="mi">500</span><span class="p">,</span> <span class="mi">502</span><span class="p">,</span> <span class="mi">503</span><span class="p">,</span> <span class="mi">504</span><span class="p">):</span>
            <span class="k">print</span> <span class="o">&gt;&gt;</span> <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&#39;Encountered </span><span class="si">%i</span><span class="s"> Error. Will retry in </span><span class="si">%i</span><span class="s"> seconds&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">e</span><span class="o">.</span><span class="n">code</span><span class="p">,</span>
                    <span class="n">wait_period</span><span class="p">)</span>
            <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="n">wait_period</span><span class="p">)</span>
            <span class="n">wait_period</span> <span class="o">*=</span> <span class="mf">1.5</span>
            <span class="k">return</span> <span class="n">wait_period</span>
        <span class="k">else</span><span class="p">:</span>
            <span class="k">raise</span> <span class="n">e</span>

    <span class="c"># End of nested helper function</span>
    
    <span class="n">wait_period</span> <span class="o">=</span> <span class="mi">2</span> 
    <span class="n">error_count</span> <span class="o">=</span> <span class="mi">0</span> 

    <span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
        <span class="k">try</span><span class="p">:</span>
            <span class="k">return</span> <span class="n">twitter_api_func</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">)</span>
        <span class="k">except</span> <span class="n">twitter</span><span class="o">.</span><span class="n">api</span><span class="o">.</span><span class="n">TwitterHTTPError</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
            <span class="n">error_count</span> <span class="o">=</span> <span class="mi">0</span> 
            <span class="n">wait_period</span> <span class="o">=</span> <span class="n">handle_twitter_http_error</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">wait_period</span><span class="p">)</span>
            <span class="k">if</span> <span class="n">wait_period</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
                <span class="k">return</span>
        <span class="k">except</span> <span class="n">URLError</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
            <span class="n">error_count</span> <span class="o">+=</span> <span class="mi">1</span>
            <span class="k">print</span> <span class="o">&gt;&gt;</span> <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;URLError encountered. Continuing.&quot;</span>
            <span class="k">if</span> <span class="n">error_count</span> <span class="o">&gt;</span> <span class="n">max_errors</span><span class="p">:</span>
                <span class="k">print</span> <span class="o">&gt;&gt;</span> <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Too many consecutive errors...bailing out.&quot;</span>
                <span class="k">raise</span>
        <span class="k">except</span> <span class="n">BadStatusLine</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
            <span class="n">error_count</span> <span class="o">+=</span> <span class="mi">1</span>
            <span class="k">print</span> <span class="o">&gt;&gt;</span> <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;BadStatusLine encountered. Continuing.&quot;</span>
            <span class="k">if</span> <span class="n">error_count</span> <span class="o">&gt;</span> <span class="n">max_errors</span><span class="p">:</span>
                <span class="k">print</span> <span class="o">&gt;&gt;</span> <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Too many consecutive errors...bailing out.&quot;</span>
                <span class="k">raise</span>
                
<span class="k">def</span> <span class="nf">store_friends_followers_ids</span><span class="p">(</span><span class="n">twitter_api</span><span class="p">,</span> <span class="n">screen_name</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">user_id</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
                              <span class="n">friends_limit</span><span class="o">=</span><span class="n">maxint</span><span class="p">,</span> <span class="n">followers_limit</span><span class="o">=</span><span class="n">maxint</span><span class="p">,</span> <span class="n">database</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
    
    <span class="c"># Must have either screen_name or user_id (logical xor)</span>
    <span class="k">assert</span> <span class="p">(</span><span class="n">screen_name</span> <span class="o">!=</span> <span class="bp">None</span><span class="p">)</span> <span class="o">!=</span> <span class="p">(</span><span class="n">user_id</span> <span class="o">!=</span> <span class="bp">None</span><span class="p">),</span> <span class="s">&quot;Must have screen_name or user_id, but not both&quot;</span>
    
    <span class="c"># See https://dev.twitter.com/docs/api/1.1/get/friends/ids  and</span>
    <span class="c"># See https://dev.twitter.com/docs/api/1.1/get/followers/ids for details on API parameters</span>
    
    <span class="n">get_friends_ids</span> <span class="o">=</span> <span class="n">partial</span><span class="p">(</span><span class="n">make_twitter_request</span><span class="p">,</span> <span class="n">twitter_api</span><span class="o">.</span><span class="n">friends</span><span class="o">.</span><span class="n">ids</span><span class="p">,</span> <span class="n">count</span><span class="o">=</span><span class="mi">5000</span><span class="p">)</span>
    <span class="n">get_followers_ids</span> <span class="o">=</span> <span class="n">partial</span><span class="p">(</span><span class="n">make_twitter_request</span><span class="p">,</span> <span class="n">twitter_api</span><span class="o">.</span><span class="n">followers</span><span class="o">.</span><span class="n">ids</span><span class="p">,</span> <span class="n">count</span><span class="o">=</span><span class="mi">5000</span><span class="p">)</span>
    
    <span class="k">for</span> <span class="n">twitter_api_func</span><span class="p">,</span> <span class="n">limit</span><span class="p">,</span> <span class="n">label</span> <span class="ow">in</span> <span class="p">[</span>
                                 <span class="p">[</span><span class="n">get_friends_ids</span><span class="p">,</span> <span class="n">friends_limit</span><span class="p">,</span> <span class="s">&quot;friends&quot;</span><span class="p">],</span> 
                                 <span class="p">[</span><span class="n">get_followers_ids</span><span class="p">,</span> <span class="n">followers_limit</span><span class="p">,</span> <span class="s">&quot;followers&quot;</span><span class="p">]</span>
                             <span class="p">]:</span>
        
        <span class="k">if</span> <span class="n">limit</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> <span class="k">continue</span>
        
        <span class="n">total_ids</span> <span class="o">=</span> <span class="mi">0</span>
        <span class="n">cursor</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
        <span class="k">while</span> <span class="n">cursor</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span>
        
            <span class="c"># Use make_twitter_request via the partially bound callable...</span>
            <span class="k">if</span> <span class="n">screen_name</span><span class="p">:</span> 
                <span class="n">response</span> <span class="o">=</span> <span class="n">twitter_api_func</span><span class="p">(</span><span class="n">screen_name</span><span class="o">=</span><span class="n">screen_name</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="n">cursor</span><span class="p">)</span>
            <span class="k">else</span><span class="p">:</span> <span class="c"># user_id</span>
                <span class="n">response</span> <span class="o">=</span> <span class="n">twitter_api_func</span><span class="p">(</span><span class="n">user_id</span><span class="o">=</span><span class="n">user_id</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="n">cursor</span><span class="p">)</span>

            <span class="k">if</span> <span class="n">response</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
                <span class="n">ids</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s">&#39;ids&#39;</span><span class="p">]</span>
                <span class="n">total_ids</span> <span class="o">+=</span> <span class="nb">len</span><span class="p">(</span><span class="n">ids</span><span class="p">)</span>
                <span class="n">save_to_mongo</span><span class="p">({</span><span class="s">&quot;ids&quot;</span> <span class="p">:</span> <span class="p">[</span><span class="n">_id</span> <span class="k">for</span> <span class="n">_id</span> <span class="ow">in</span> <span class="n">ids</span> <span class="p">]},</span> <span class="n">database</span><span class="p">,</span> <span class="n">label</span> <span class="o">+</span> <span class="s">&quot;_ids&quot;</span><span class="p">)</span>
                <span class="n">cursor</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="s">&#39;next_cursor&#39;</span><span class="p">]</span>
        
            <span class="k">print</span> <span class="o">&gt;&gt;</span> <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&#39;Fetched {0} total {1} ids for {2}&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">total_ids</span><span class="p">,</span> <span class="n">label</span><span class="p">,</span> <span class="p">(</span><span class="n">user_id</span> <span class="ow">or</span> <span class="n">screen_name</span><span class="p">))</span>
            <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
        
            <span class="c"># Consider storing the ids to disk during each iteration to provide an </span>
            <span class="c"># an additional layer of protection from exceptional circumstances</span>
        
            <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">ids</span><span class="p">)</span> <span class="o">&gt;=</span> <span class="n">limit</span> <span class="ow">or</span> <span class="n">response</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
                <span class="k">break</span>
                <span class="k">print</span> <span class="o">&gt;&gt;</span> <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&#39;Last cursor&#39;</span><span class="p">,</span> <span class="n">cursor</span>
                <span class="k">print</span> <span class="o">&gt;&gt;</span> <span class="n">sts</span><span class="o">.</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&#39;Last response&#39;</span><span class="p">,</span> <span class="n">response</span>

<span class="k">def</span> <span class="nf">save_to_mongo</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">mongo_db</span><span class="p">,</span> <span class="n">mongo_db_coll</span><span class="p">,</span> <span class="n">auth</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="o">**</span><span class="n">mongo_conn_kw</span><span class="p">):</span>
    
    <span class="c"># Connects to the MongoDB server running on </span>
    <span class="c"># localhost:27017 by default</span>
    
    <span class="n">client</span> <span class="o">=</span> <span class="n">pymongo</span><span class="o">.</span><span class="n">MongoClient</span><span class="p">(</span><span class="o">**</span><span class="n">mongo_conn_kw</span><span class="p">)</span>
    
    <span class="c"># Get a reference to a particular database</span>
    
    <span class="n">db</span> <span class="o">=</span> <span class="n">client</span><span class="p">[</span><span class="n">mongo_db</span><span class="p">]</span>
    <span class="k">if</span> <span class="n">auth</span><span class="p">:</span>
        <span class="n">db</span><span class="o">.</span><span class="n">authenticate</span><span class="p">(</span><span class="n">auth</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">auth</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
        
    <span class="c"># Reference a particular collection on the database</span>
    
    <span class="n">coll</span> <span class="o">=</span> <span class="n">db</span><span class="p">[</span><span class="n">mongo_db_coll</span><span class="p">]</span>
    
    <span class="c"># Perform a bulk insert and  return the ids</span>
    
    <span class="k">return</span> <span class="n">coll</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>

<span class="k">def</span> <span class="nf">load_from_mongo</span><span class="p">(</span><span class="n">mongo_db</span><span class="p">,</span> <span class="n">mongo_db_coll</span><span class="p">,</span> <span class="n">return_cursor</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
                    <span class="n">criteria</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">projection</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">auth</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="o">**</span><span class="n">mongo_conn_kw</span><span class="p">):</span>
    
    <span class="c"># Optionally, use criteria and projection to limit the data that is </span>
    <span class="c"># returned as documented in </span>
    <span class="c"># http://docs.mongodb.org/manual/reference/method/db.collection.find/</span>
    
    <span class="c"># Consider leveraging MongoDB&#39;s aggregations framework for more </span>
    <span class="c"># sophisticated queries.</span>
    
    <span class="n">client</span> <span class="o">=</span> <span class="n">pymongo</span><span class="o">.</span><span class="n">MongoClient</span><span class="p">(</span><span class="o">**</span><span class="n">mongo_conn_kw</span><span class="p">)</span>
    <span class="n">db</span> <span class="o">=</span> <span class="n">client</span><span class="p">[</span><span class="n">mongo_db</span><span class="p">]</span>
    
    <span class="k">if</span> <span class="n">auth</span><span class="p">:</span>
        <span class="n">db</span><span class="o">.</span><span class="n">authenticate</span><span class="p">(</span><span class="n">auth</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">auth</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>

    <span class="n">coll</span> <span class="o">=</span> <span class="n">db</span><span class="p">[</span><span class="n">mongo_db_coll</span><span class="p">]</span>
    
    <span class="k">if</span> <span class="n">criteria</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
        <span class="n">criteria</span> <span class="o">=</span> <span class="p">{}</span>
    
    <span class="k">if</span> <span class="n">projection</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
        <span class="n">cursor</span> <span class="o">=</span> <span class="n">coll</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">criteria</span><span class="p">)</span>
    <span class="k">else</span><span class="p">:</span>
        <span class="n">cursor</span> <span class="o">=</span> <span class="n">coll</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">criteria</span><span class="p">,</span> <span class="n">projection</span><span class="p">)</span>

    <span class="c"># Returning a cursor is recommended for large amounts of data</span>
    
    <span class="k">if</span> <span class="n">return_cursor</span><span class="p">:</span>
        <span class="k">return</span> <span class="n">cursor</span>
    <span class="k">else</span><span class="p">:</span>
        <span class="k">return</span> <span class="p">[</span> <span class="n">item</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">cursor</span> <span class="p">]</span>
    
<span class="k">def</span> <span class="nf">store_user_info</span><span class="p">(</span><span class="n">twitter_api</span><span class="p">,</span> <span class="n">screen_names</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">user_ids</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">database</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
   
    <span class="c"># Must have either screen_name or user_id (logical xor)</span>
    <span class="k">assert</span> <span class="p">(</span><span class="n">screen_names</span> <span class="o">!=</span> <span class="bp">None</span><span class="p">)</span> <span class="o">!=</span> <span class="p">(</span><span class="n">user_ids</span> <span class="o">!=</span> <span class="bp">None</span><span class="p">),</span> <span class="s">&quot;Must have screen_names or user_ids, but not both&quot;</span>
    
    <span class="n">items</span> <span class="o">=</span> <span class="n">screen_names</span> <span class="ow">or</span> <span class="n">user_ids</span>
    
    <span class="k">while</span> <span class="nb">len</span><span class="p">(</span><span class="n">items</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">items</span><span class="p">)</span><span class="o">/</span><span class="mi">100</span><span class="o">*</span><span class="mi">100</span> <span class="o">%</span> <span class="mi">1000</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
            <span class="k">print</span> <span class="o">&gt;&gt;</span> <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">items</span><span class="p">),</span> <span class="s">&quot;remaining&quot;</span>
            
        <span class="c"># Process 100 items at a time per the API specifications for /users/lookup. See</span>
        <span class="c"># https://dev.twitter.com/docs/api/1.1/get/users/lookup for details</span>
        
        <span class="n">items_str</span> <span class="o">=</span> <span class="s">&#39;,&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="nb">str</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">items</span><span class="p">[:</span><span class="mi">100</span><span class="p">]])</span>
        <span class="n">items</span> <span class="o">=</span> <span class="n">items</span><span class="p">[</span><span class="mi">100</span><span class="p">:]</span>

        <span class="k">if</span> <span class="n">screen_names</span><span class="p">:</span>
            <span class="n">response</span> <span class="o">=</span> <span class="n">make_twitter_request</span><span class="p">(</span><span class="n">twitter_api</span><span class="o">.</span><span class="n">users</span><span class="o">.</span><span class="n">lookup</span><span class="p">,</span> <span class="n">screen_name</span><span class="o">=</span><span class="n">items_str</span><span class="p">)</span>
        <span class="k">else</span><span class="p">:</span> <span class="c"># user_ids</span>
            <span class="n">response</span> <span class="o">=</span> <span class="n">make_twitter_request</span><span class="p">(</span><span class="n">twitter_api</span><span class="o">.</span><span class="n">users</span><span class="o">.</span><span class="n">lookup</span><span class="p">,</span> <span class="n">user_id</span><span class="o">=</span><span class="n">items_str</span><span class="p">)</span>
    
        <span class="k">for</span> <span class="n">profile</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>            
            <span class="n">save_to_mongo</span><span class="p">(</span><span class="n">profile</span><span class="p">,</span> <span class="n">database</span><span class="p">,</span> <span class="s">&#39;followers_profiles&#39;</span><span class="p">)</span>
            
<span class="c"># Go ahead and instantiate an instance of the Twitter API for common use</span>
<span class="c"># throughout the rest of this notebook.</span>

<span class="n">twitter_api</span> <span class="o">=</span> <span class="n">oauth_login</span><span class="p">()</span>
</pre></div>

</div>
</div>

</div>
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="Harvesting-Followers-for-Tim-O'Reilly">Harvesting Followers for Tim O'Reilly<a class="anchor-link" href="#Harvesting-Followers-for-Tim-O'Reilly">&#182;</a></h2>
</div>

<div class="text_cell_render border-box-sizing rendered_html">
<p>Recall from previous posts in this series that harvesting followers is a two-step process. First, harvest the IDs, and then use the IDs to procure the corresponding profiles.</p>
<p>First, let's get the IDs...</p>
</div>
<div class="cell border-box-sizing code_cell vbox">
<div class="input hbox">
<div class="prompt input_prompt">
In&nbsp;[]:
</div>
<div class="input_area box-flex1">
<div class="highlight"><pre><span class="c"># Harvest the follower IDS. Note that this process takes a bit of time since</span>
<span class="c"># you are limited to harvesting 75k IDs per 15 minute window.</span>
<span class="c"># </span>
<span class="c"># Some example accounts that we&#39;ll look at later in this notebook:</span>
<span class="c">#</span>
<span class="c"># Tim O&#39;Reilly: ~1.7M followers (~6 hours)</span>
<span class="c"># Marissa Mayer: ~460k followers (~1.5 hours)</span>
<span class="c"># Lady Gaga: ~40M followers (~5.5 days)</span>
<span class="c">#</span>
<span class="c"># All in all, it takes a little over a week to harvest all of these IDs.</span>


<span class="c"># Define a simple wrapper that accepts a list of screen names for convenience</span>
<span class="c"># and reusability later.</span>

<span class="k">def</span> <span class="nf">harvest_followers_ids</span><span class="p">(</span><span class="n">screen_names</span><span class="o">=</span><span class="p">[]):</span>
    <span class="k">for</span> <span class="n">screen_name</span> <span class="ow">in</span> <span class="n">screen_names</span><span class="p">:</span>
        <span class="n">store_friends_followers_ids</span><span class="p">(</span><span class="n">twitter_api</span><span class="p">,</span> <span class="n">screen_name</span><span class="o">=</span><span class="n">screen_name</span><span class="p">,</span> 
                                    <span class="n">friends_limit</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">database</span><span class="o">=</span><span class="n">screen_name</span><span class="p">)</span>

        
<span class="n">harvest_followers_ids</span><span class="p">(</span><span class="n">screen_names</span><span class="o">=</span><span class="p">[</span> <span class="s">&#39;timoreilly&#39;</span> <span class="p">])</span>

<span class="k">print</span> <span class="s">&quot;Done&quot;</span>
</pre></div>

</div>
</div>

</div>
<div class="text_cell_render border-box-sizing rendered_html">
<p>And now, let's get the profiles...</p>
</div>
<div class="cell border-box-sizing code_cell vbox">
<div class="input hbox">
<div class="prompt input_prompt">
In&nbsp;[]:
</div>
<div class="input_area box-flex1">
<div class="highlight"><pre><span class="c"># Iterate over the IDs for each follower of Tim O&#39;Reilly and</span>
<span class="c"># lookup the profile. This process also takes some time since you are </span>
<span class="c"># limited to 18k profiles per 15 minute rate limit window. Resolving </span>
<span class="c"># all of these profiles takes a little over a day.</span>
<span class="c">#</span>
<span class="c"># Note that we could always opt to draw a random sample for a highly popular </span>
<span class="c"># account&#39;s followers IDs for a statistical analysis. However, be advised that</span>
<span class="c"># for the sample to be truly random, you do probabably need to first pull down the</span>
<span class="c"># totality of the follower IDs and then draw from that collection. Simply harvesting</span>
<span class="c"># the first N followers returned by the API and using that as a sample may not be </span>
<span class="c"># sufficient, since Twitter currently returns followers in the order in which the</span>
<span class="c"># follow occurred (though this is subject to change without notice.)</span>
<span class="c">#</span>
<span class="c"># For example, a 95% confidence interval with a 1% margin of error requires just</span>
<span class="c"># under 10k items be drawn for the random sample. A 99% confidence interval with </span>
<span class="c"># a 1% margin of error requires just under 17k items be drawn for the random sample.</span>


<span class="c"># Define another convenience wrapper and assume that you&#39;ve already</span>
<span class="c"># harvested the follower IDs for the account in question</span>

<span class="k">def</span> <span class="nf">harvest_followers_profiles</span><span class="p">(</span><span class="n">screen_names</span><span class="o">=</span><span class="p">[]):</span> 
    <span class="k">for</span> <span class="n">screen_name</span> <span class="ow">in</span> <span class="n">screen_names</span><span class="p">:</span>
        <span class="n">followers_ids</span> <span class="o">=</span> <span class="n">load_from_mongo</span><span class="p">(</span><span class="n">screen_name</span><span class="p">,</span> <span class="s">&#39;followers_ids&#39;</span><span class="p">)</span>
        
        <span class="c"># Flattening the IDs into memory requires a generous heap space. An</span>
        <span class="c"># m1.xlarge AWS node (15GB of memory) should be more than sufficient</span>
        <span class="c"># and spot prices are typically around $0.05/hr</span>
        
        <span class="n">all_ids</span> <span class="o">=</span> <span class="p">[</span> <span class="n">_id</span> <span class="k">for</span> <span class="n">ids_batch</span> <span class="ow">in</span> <span class="n">followers_ids</span> <span class="k">for</span> <span class="n">_id</span> <span class="ow">in</span> <span class="n">ids_batch</span><span class="p">[</span><span class="s">&#39;ids&#39;</span><span class="p">]</span> <span class="p">]</span>
        
        <span class="n">store_user_info</span><span class="p">(</span><span class="n">twitter_api</span><span class="p">,</span> <span class="n">user_ids</span><span class="o">=</span><span class="n">all_ids</span><span class="p">,</span> <span class="n">database</span><span class="o">=</span><span class="n">screen_name</span><span class="p">)</span>

        
<span class="n">harvest_followers_profiles</span><span class="p">(</span><span class="n">screen_names</span><span class="o">=</span><span class="p">[</span> <span class="s">&#39;timoreilly&#39;</span> <span class="p">])</span>

<span class="k">print</span> <span class="s">&quot;Done.&quot;</span>
</pre></div>

</div>
</div>

</div>
<div class="text_cell_render border-box-sizing rendered_html">
<p>That all the data that we need to narrow in on Tim O'Reilly's account and investigate the relationship between popularity on Twitter and influence. (The functions from this section are trivially reusable for harvesting Lady Gaga's and Marissa Mayer's data.)</p>
</div>
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="3.-Analyze">3. Analyze<a class="anchor-link" href="#3.-Analyze">&#182;</a></h1>
</div>

<div class="text_cell_render border-box-sizing rendered_html">
<p>Now that we have the data, let the analysis begin!</p>
</div>
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="Taking-a-closer-look-at-Tim-O'Reilly's-followers">Taking a closer look at Tim O'Reilly's followers<a class="anchor-link" href="#Taking-a-closer-look-at-Tim-O'Reilly's-followers">&#182;</a></h2>
</div>

<div class="text_cell_render border-box-sizing rendered_html">
<p>This section is a template for how you could take a closer look at an account's followers. The possibilities are endless, and we'll just work through a few examples to gain better intuition about Twitter popularity as an indicator of influence. In other words, how much influence can be exerted on these followers? Are all ~1.7M of his followers likely to be influenceable. It may be helpful to review the initial discussion on <a href="http://miningthesocialweb.com/2013/09/19/computing-twitter-influence-part-1/">forging a base metric for influence</a> that started this series if you don't recall that discussion.</p>
</div>
<div class="cell border-box-sizing code_cell vbox">
<div class="input hbox">
<div class="prompt input_prompt">
In&nbsp;[]:
</div>
<div class="input_area box-flex1">
<div class="highlight"><pre><span class="c"># Compute a list containing the number of followers for each of Tim O&#39;Reilly&#39;s own followers.</span>
<span class="c"># Sort it for convenience of slicing and plotting.</span>

<span class="n">timoreilly_followers_counts</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">([</span><span class="n">f</span><span class="p">[</span><span class="s">&#39;followers_count&#39;</span><span class="p">]</span> 
                                      <span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">load_from_mongo</span><span class="p">(</span><span class="s">&#39;timoreilly&#39;</span><span class="p">,</span> <span class="s">&#39;followers_profiles&#39;</span><span class="p">,</span> 
                                                         <span class="n">projection</span><span class="o">=</span><span class="p">{</span><span class="s">&#39;followers_count&#39;</span> <span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="s">&#39;_id&#39;</span> <span class="p">:</span> <span class="mi">0</span><span class="p">})])</span>
</pre></div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell vbox">
<div class="input hbox">
<div class="prompt input_prompt">
In&nbsp;[]:
</div>
<div class="input_area box-flex1">
<div class="highlight"><pre><span class="c"># Now, let&#39;s plot the list to gain some initial intuition about the curve.</span>

<span class="n">plt</span><span class="o">.</span><span class="n">loglog</span><span class="p">(</span><span class="n">timoreilly_followers_counts</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s">&quot;Num Followers&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">&quot;Follower Rank&quot;</span><span class="p">)</span>
</pre></div>

</div>
</div>

<div class="vbox output_wrapper">
<div class="output vbox">


<div class="hbox output_area"><div class="prompt output_prompt">
    Out[3]:</div>
<div class="box-flex1 output_subarea output_pyout">


<pre>
&lt;matplotlib.text.Text at 0x30b26d0&gt;
</pre>

</div>
</div>

<div class="hbox output_area"><div class="prompt"></div>
<div class="box-flex1 output_subarea output_display_data">


<img src="
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
RU5ErkJggg==
">

</div>
</div>

</div>
</div>

</div>
<div class="text_cell_render border-box-sizing rendered_html">
<p>It appears that the curve resembles that of a &quot;power law&quot; distribution. In other words, there are some extreme outliers that are wildly popular, but most of the area &quot;under the curve&quot; lies within the &quot;long tail&quot;, though it's a bit hard to see in this plot.</p>
</div>
<div class="cell border-box-sizing code_cell vbox">
<div class="input hbox">
<div class="prompt input_prompt">
In&nbsp;[]:
</div>
<div class="input_area box-flex1">
<div class="highlight"><pre><span class="c"># Now knowing that the curve resembles that of a &quot;power law&quot; and that</span>
<span class="c"># most of the substance is in the &quot;long tail&quot;, let&#39;s zoom in on some the tail </span>
<span class="c"># with a histogram.</span>

<span class="c"># The resolution for a histogram displaying the full data set would be less than </span>
<span class="c"># useful to look at since the x-axis would stretch all the way out to accomodate </span>
<span class="c"># the outliers. (Try it.)</span>
<span class="c"># plt.hist(timoreilly_followers_counts)</span>

<span class="c"># So, hack the display a bit so that we only visualize 99% of the data and avoid the</span>
<span class="c"># outliers on the upper extreme. It&#39;s easy enough to produce a separate plot of them</span>

<span class="n">bins</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">10</span><span class="p">,</span><span class="mi">100</span><span class="p">,</span><span class="mi">200</span><span class="p">,</span><span class="mi">300</span><span class="p">,</span><span class="mi">400</span><span class="p">,</span><span class="mi">500</span><span class="p">,</span><span class="mi">1000</span><span class="p">,</span><span class="mi">4000</span><span class="p">]</span>
<span class="n">plt</span><span class="o">.</span><span class="n">hist</span><span class="p">(</span><span class="n">timoreilly_followers_counts</span><span class="p">[:</span><span class="nb">len</span><span class="p">(</span><span class="n">timoreilly_followers_counts</span><span class="p">)</span><span class="o">/</span><span class="mi">100</span><span class="o">*</span><span class="mi">99</span><span class="p">],</span> <span class="n">bins</span><span class="o">=</span><span class="n">bins</span><span class="p">)</span>


<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s">&quot;Tim O&#39;Reilly Followers&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">&#39;Bins (range of popularity for Tim</span><span class="se">\&#39;</span><span class="s">s followers)&#39;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s">&#39;Number of followers in bin&#39;</span><span class="p">)</span>
</pre></div>

</div>
</div>

<div class="vbox output_wrapper">
<div class="output vbox">


<div class="hbox output_area"><div class="prompt output_prompt">
    Out[4]:</div>
<div class="box-flex1 output_subarea output_pyout">


<pre>
&lt;matplotlib.text.Text at 0x3081b10&gt;
</pre>

</div>
</div>

<div class="hbox output_area"><div class="prompt"></div>
<div class="box-flex1 output_subarea output_display_data">


<img src="
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
Hz7c4dqyuTg7WlvWW7VqlfzmN7+RiRMniohlft87Zc+nOR3xHiC5afBDUlISYmJiAAAxMTHYvXs3
AGDPnj2IjIyEWq2GVquFu7s7jhw5YpaYgoKC0KdPnzuOKz09HQUFBSgrK1N6dNHR0UoZc8YJ3HpA
SXvG6ezsDF9fXwBA7969MXToUOTl5XW4Nm0uTqBjtWnPnj0BAJWVlaipqUGfPn06XFs2FyfQsdoS
AHJzc/Hxxx9j7ty5SmyWaM8ulXw62j1AKpUKjzzyCEaNGoX33nsPAFBYWAgnJycAgJOTEwoLCwEA
+fn5jUbtWTr21sZ183IXFxeLxbtu3Tr4+Phgzpw5yumCjhLn+fPnceLECYwePbpDt2l9nIGBgQA6
VpvW1tbC19cXTk5OymnCjtiWt4oT6FhtCQAvv/wy3nrrLVhZ/V86sER7dqnk09GeGpqWloYTJ05g
3759WL9+PQ4fPtxovUqlum3M7XU8puJqT/PmzUNWVha++eYb9O/fHwsXLmzvkBTl5eWYOnUq1qxZ
Axsbm0brOlKblpeX44knnsCaNWvQu3fvDtemVlZW+Oabb5Cbm4vPP/8cn376aaP1HaUtb44zNTW1
w7Xl3r174ejoCD8/v2ZvQTFXe3ap5NOSe4AsqX///gCAfv36YcqUKThy5AicnJxw8eJFAEBBQQEc
HR0BNI09NzcXLi4uFou1NXFpNBq4uLggNzfX4vE6Ojoqvyxz585VTk22d5xVVVWYOnUqoqKiMHny
ZAAds03r45wxY4YSZ0dtUzs7Ozz22GPIyMjokG15c5zHjh3rcG355ZdfIikpCYMGDUJkZCQOHTqE
qKgoy7Rnm1+56sCqqqpk8ODBkpWVJRUVFe064ODq1atSWloqIiLl5eXywAMPyP79+2Xx4sUSFxcn
IiIrVqxocqGvoqJCzp07J4MHD1Yu9JlDVlZWkwEHrY0rICBAvv76a6mtrTXbhdKb48zPz1fe//nP
f5bIyMh2j7O2tlaioqLkpZdearS8o7Vpc3F2pDa9dOmSGI1GERG5du2aBAUFySeffNLh2rK5OAsK
CpRt2rstb5aamiq//vWvRcQyP5tdKvmIiHz88cei1+vFzc1N3nzzzXaL49y5c+Lj4yM+Pj4ybNgw
JZaioiIJDg4WnU4nISEhyg+wiMgbb7whbm5uMmTIEElOTjZbbE8++aT0799f1Gq1aDQa2bhx4x3F
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
IrK4/w/V0PoZFAA4EgAAAABJRU5ErkJggg==
">

</div>
</div>

</div>
</div>

</div>
<div class="text_cell_render border-box-sizing rendered_html">
<p>Hmm, there are a lot of followers that don't have many followers at all as we can see from the left side of the histogram. It appears that a highly disporportionate number of Tim O'Reilly's followers have fewer than 10 followers of their own. These <em>could</em> be legitimate accounts (active and not a spam-bot), but let's tentatively consider these followers 'suspect' and take a closer look at them.</p>
</div>
<div class="cell border-box-sizing code_cell vbox">
<div class="input hbox">
<div class="prompt input_prompt">
In&nbsp;[]:
</div>
<div class="input_area box-flex1">
<div class="highlight"><pre><span class="c"># Let&#39;s start with a very base assumption for the time being: </span>
<span class="c"># any follower with less than 10 followers of their own is &quot;suspect&quot; in the</span>
<span class="c"># sense that this follower may be an inactive account, spambot, or abandoned account.</span>
<span class="c"># Regardless, it probably offers no meaningful influence. (Although this assumption </span>
<span class="c"># may be a bit naive, it seems a reasonable starting point for now.)</span>

<span class="n">MIN</span> <span class="o">=</span> <span class="mi">10</span>
<span class="n">timoreilly_suspect_followers</span> <span class="o">=</span> <span class="p">[</span><span class="n">f</span> 
                                <span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">load_from_mongo</span><span class="p">(</span><span class="s">&#39;timoreilly&#39;</span><span class="p">,</span> <span class="s">&#39;followers_profiles&#39;</span><span class="p">,</span> 
                                                          <span class="n">projection</span><span class="o">=</span><span class="p">{</span><span class="s">&#39;followers_count&#39;</span> <span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="s">&#39;id&#39;</span> <span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="s">&#39;_id&#39;</span> <span class="p">:</span> <span class="mi">0</span><span class="p">})</span>
                                <span class="k">if</span> <span class="n">f</span><span class="p">[</span><span class="s">&#39;followers_count&#39;</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">MIN</span><span class="p">]</span>

<span class="k">print</span> <span class="s">&quot;Tim O&#39;Reilly has {0} &#39;suspect&#39; followers for MIN={1}&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">timoreilly_suspect_followers</span><span class="p">),</span> <span class="n">MIN</span><span class="p">)</span>
</pre></div>

</div>
</div>

<div class="vbox output_wrapper">
<div class="output vbox">


<div class="hbox output_area"><div class="prompt"></div>
<div class="box-flex1 output_subarea output_stream output_stdout">
<pre>
Tim O&apos;Reilly has 877457 &apos;suspect&apos; followers for MIN=10

</pre>
</div>
</div>

</div>
</div>

</div>
<div class="text_cell_render border-box-sizing rendered_html">
<p>Whoa! Approximately 50% of Tim O'Reilly's followers are suspect. Let's narrow in on them some more by plotting a histogram to zoom in a bit more on the data.</p>
</div>
<div class="cell border-box-sizing code_cell vbox">
<div class="input hbox">
<div class="prompt input_prompt">
In&nbsp;[]:
</div>
<div class="input_area box-flex1">
<div class="highlight"><pre><span class="c"># What does a plot of these &#39;suspect&#39; followers look like?</span>

<span class="n">timoreilly_suspect_followers_counts</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">([</span><span class="n">f</span><span class="p">[</span><span class="s">&#39;followers_count&#39;</span><span class="p">]</span> 
                                              <span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">timoreilly_suspect_followers</span><span class="p">],</span> <span class="n">reverse</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>

<span class="n">plt</span><span class="o">.</span><span class="n">hist</span><span class="p">(</span><span class="n">timoreilly_suspect_followers_counts</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s">&quot;Tim O&#39;Reilly Suspect Followers&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">&#39;Bins (range of followers)&#39;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s">&#39;Number of followers in each bin&#39;</span><span class="p">)</span>
</pre></div>

</div>
</div>

<div class="vbox output_wrapper">
<div class="output vbox">


<div class="hbox output_area"><div class="prompt output_prompt">
    Out[6]:</div>
<div class="box-flex1 output_subarea output_pyout">


<pre>
&lt;matplotlib.text.Text at 0x26f3d7d0&gt;
</pre>

</div>
</div>

<div class="hbox output_area"><div class="prompt"></div>
<div class="box-flex1 output_subarea output_display_data">


<img src="
AAALEgAACxIB0t1+/AAAIABJREFUeJzt3XtcVHX++PHXCOMdUFFBGBKFQUQRNEG6qCiBaYXmDa0E
L9Wmu+XazW1327SL2MXvaqW7bVGS9RPLSsmULBU1S7xVlmaggsKANy6CgSD4+f3BelYCHEBmRuD9
fDzm4cxn5pz3+xxk3pxzPp/P0SmlFEIIIUQja2XrBIQQQjRPUmCEEEJYhBQYIYQQFiEFRgghhEVI
gRFCCGERUmCEEEJYhBQYcd369+/Pjh07bJ1GvZ08eRIHBweu9NQPDQ0lLi4OgJUrVzJ06FBbptek
yb4UIAVG1EHHjh1xcHDAwcGBVq1a0b59e+316tWr+fnnnxk2bFijxVu5ciX+/v506NCBHj16MGfO
HM6fP6+9v2DBAhYuXAhAcnIyrVq1wsHBAUdHR3x8fPjPf/5Tpzg33XQTRUVF6HQ6AHQ6nfb8eqxf
v57AwECcnJzo1q0bYWFhZGRkXPd6LaFVq1YcP3681vdXrlyJnZ2d9vN2cHDgscceM7vextqXommz
t3UC4sZ34cIF7XmvXr2Ii4tj5MiRFom1ZMkSXn31Vd5//33CwsLIyspizpw5hIeHs2vXLvR6fbUv
Lnd3dzIzMwHYtGkT99xzD7fddhv9+vWzSI7XcvToUWJiYvjss88YMWIEFy5cYPPmzdjZ2Vk9l7oy
N9b6tttua5JHqFdUVFTc0Pu/OZMjGHHdPD092bp1K1B5dDFp0iSmTZuGo6MjAwYMIC0tjdjYWFxc
XOjZsydfffVVjespLCxkwYIFvPnmm0RERGBnZ0fPnj356KOPyMjI4IMPPtA+W9tfx6NHj8bZ2Zlf
fvkFqPzyXLx4Md7e3nTt2pWoqCjy8/MByMjIoFWrVly+fPma2/fHP/6RJ598skpbZGQkS5curfbZ
H374gV69ejFixAig8uhv/PjxeHh4ADB9+nSeffZZ7fPJycnaewAvv/wyBoMBR0dHfH19q+zXiRMn
MmXKFBwdHbn55ps5ePCgtlx2djYTJkyge/fu9O7dmzfeeEN77/LlyyxatAhvb28cHR0JCgoiKytL
O+oMCAjAwcGBjz/+uMbtr60AffvttwQFBdGpUyeCg4P57rvvat+JdVhu27ZtDBgwQPtceHg4wcHB
2uuhQ4eSmJhodnuv7Ktp06bh5OREfHw8e/bsYfDgwTg5OeHq6soTTzxRp1zFdVJC1IOnp6fasmVL
rW3PPfecatu2rdq8ebMqLy9X0dHRqmfPnmrRokWqvLxcvf3226pXr141rnvTpk3K3t5eVVRUVHsv
JiZGTZ06tVr7tm3blMFgUEopVVFRodavX6/atGmjjh49qpRSaunSpeqWW25RJpNJlZWVqT/84Q/a
etLT05VOp9PihYaGqri4OKWUUu+99566/fbblVJK7dmzR7m5uanLly8rpZQ6e/asat++vTpz5ky1
fI4fP67atm2r5s2bp7Zt26aKioqqvD99+nT17LPP1pj/kSNHlIeHh8rJyVFKKXXixAl17Ngxbb/q
9Xr1ySefqPLycvXaa6+pXr16qfLyclVRUaEGDRqkXnjhBXXp0iV1/Phx1bt3b/Xll18qpZR65ZVX
lL+/v0pNTVVKKfXjjz+q3NxcpZRSOp1Oi1GTq/fD1XJzc1WnTp3UBx98oCoqKtTq1atV586dVV5e
3jX35bWWKy4uVm3btlW5ubmqrKxMde/eXRkMBnXhwgVVXFys2rVrp/Ly8sxu75V9tX79eqWUUiUl
JSokJER98MEHSimlfvvtN7V79+5at1k0HjmCEY1u2LBhhIeHY2dnx8SJE8nNzeUvf/kLdnZ2REVF
kZGRQWFhYbXlzp07R9euXWnVqvp/S1dXV86dO1djvOzsbDp37kz79u259957WbVqFV5eXgC89dZb
vPjii7i5uaHX63nuuedYu3at2aOWqwUFBeHk5MSWLVsASEhIYMSIEXTr1q3aZ3v16kVycjImk4nJ
kyfTrVs3ZsyYwW+//aZ9RtVyRGBnZ0dpaSmHDh3i0qVL3HTTTfTu3Vt7f/DgwYwfPx47Ozsef/xx
Ll68yHfffcfevXs5d+4cf//737G3t6dXr148+OCDJCQkAPDOO+/w0ksvYTQaARgwYABdunSp8/bv
3r2bzp0707lzZ7p06UJKSgpffPEFffr04f7776dVq1ZMmTIFX19f7QijNtdarl27dgQFBbF9+3b2
799PYGAgt912G9988w27d+/GaDTSuXNns9sLcOuttxIZGQlA27Ztad26NWlpaZw7d4727dszZMiQ
Om+/aDgpMKLRde/eXXverl07unbtqp3SateuHVD1us4VXbt25dy5czV++efk5NT4hQ7g5uZGfn4+
hYWFzJ07l0WLFmlf4hkZGdx7773aF6Sfnx/29vacPn26XtsUHR2tnaL74IMPmDZtWq2fHTJkCGvW
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
">

</div>
</div>

</div>
</div>

</div>
<div class="text_cell_render border-box-sizing rendered_html">
<p>Interesting. So <em>most</em> of the suspect followers appear to have 5 or fewer followers, so <em>MIN=5</em> might be a threshold to keep in mind. Let's gain a little more insight by calculating accumulation of these suspect followers for follower counts in the range of 1 to 5.</p>
</div>
<div class="cell border-box-sizing code_cell vbox">
<div class="input hbox">
<div class="prompt input_prompt">
In&nbsp;[]:
</div>
<div class="input_area box-flex1">
<div class="highlight"><pre><span class="c"># A little more analysis of how the distribution breaks down</span>
<span class="k">print</span> <span class="s">&quot;{0} of Tim O&#39;Reilly&#39;s followers have 0 followers&quot;</span>\
<span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">sum</span><span class="p">([</span><span class="mi">1</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">timoreilly_suspect_followers_counts</span> <span class="k">if</span> <span class="n">c</span> <span class="o">&lt;</span> <span class="mi">1</span><span class="p">]))</span>

<span class="k">print</span> <span class="s">&quot;{0} of Tim O&#39;Reilly&#39;s followers have 1 follower&quot;</span>\
<span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">sum</span><span class="p">([</span><span class="mi">1</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">timoreilly_suspect_followers_counts</span> <span class="k">if</span> <span class="n">c</span> <span class="o">&lt;=</span> <span class="mi">1</span><span class="p">]))</span>

<span class="k">print</span> <span class="s">&quot;{0} of Tim O&#39;Reilly&#39;s followers have less than 3 followers&quot;</span>\
<span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">sum</span><span class="p">([</span><span class="mi">1</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">timoreilly_suspect_followers_counts</span> <span class="k">if</span> <span class="n">c</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">]))</span>

<span class="k">print</span> <span class="s">&quot;{0} of Tim O&#39;Reilly&#39;s followers have less than 4 followers&quot;</span>\
<span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">sum</span><span class="p">([</span><span class="mi">1</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">timoreilly_suspect_followers_counts</span> <span class="k">if</span> <span class="n">c</span> <span class="o">&lt;</span> <span class="mi">4</span><span class="p">]))</span>

<span class="k">print</span> <span class="s">&quot;{0} of Tim O&#39;Reilly&#39;s followers have less than 5 followers&quot;</span>\
<span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">sum</span><span class="p">([</span><span class="mi">1</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">timoreilly_suspect_followers_counts</span> <span class="k">if</span> <span class="n">c</span> <span class="o">&lt;</span> <span class="mi">5</span><span class="p">]))</span>
</pre></div>

</div>
</div>

<div class="vbox output_wrapper">
<div class="output vbox">


<div class="hbox output_area"><div class="prompt"></div>
<div class="box-flex1 output_subarea output_stream output_stdout">
<pre>
117370 of Tim O&apos;Reilly&apos;s followers have 0 followers
262417 of Tim O&apos;Reilly&apos;s followers have 1 follower
412973 of Tim O&apos;Reilly&apos;s followers have less than 3 followers
542748 of Tim O&apos;Reilly&apos;s followers have less than 4 followers
643068 of Tim O&apos;Reilly&apos;s followers have less than 5 followers

</pre>
</div>
</div>

</div>
</div>

</div>
<div class="text_cell_render border-box-sizing rendered_html">
<p>Bottom line: given a threshold of <em>MIN=5</em>, about 38% of Tim O'Reilly's followers may not really be influenceable followers at all. We'd need to do some more analysis to get a better idea of what other features we could inspect to determine the likelihood of these followers being spam-bots. I have completed some non-trivial analysis that will be presented &quot;soon&quot;, but this is a good place for you to jump in. Data mining is not a spectator sport!</p>
<p>Some recommended exercises for further analysis:</p>
<ul>
<li>When were these suspect accounts created? (What you'll discover is that the majority of them were all created in the year 2009. Why might this be? Twitter experienced <a href="http://techcrunch.com/2009/10/05/twitter-data-analysis-an-investors-perspective-2/">unprecedented growth</a> in early 2009. Perhaps there was an attach of spam bots that it was not yet well equipped to handle?)</li>
<li>When did these suspect accounts last tweet? Is there a correlation to account creation time?</li>
<li>How many of these accounts have changed profile images to something other than the default profile image?</li>
<li>Who are the most popular accounts that follow Tim O'Reilly and how influenceable are they likely to be? (One of these followers is high among the most popular users in the world -- almost as popular as Lady Gaga.)</li>
</ul>
<p>We already have all of the data on hand to answer these questions and much more from the account profiles. The answers to these questions may surprise you.</p>
<p>A more advanced exercise:</p>
<ul>
<li>Try developing a heuristic (or better yet, using some supervised machine learning to build a classifier) to determine whether or not an account is likely to be spam bot as opposed just being an inactive account</li>
</ul>
</div>
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="What-do-Tim-O'Reilly-and-Lady-Gaga-have-in-common?">What do Tim O'Reilly and Lady Gaga have in common?<a class="anchor-link" href="#What-do-Tim-O'Reilly-and-Lady-Gaga-have-in-common?">&#182;</a></h2>
</div>

<div class="text_cell_render border-box-sizing rendered_html">
<p>You can trivially reuse the previously defined havesting functions to pull account data for Lady Gaga's account or any other account. Let's assume that you've done that already. It takes just under a week to harvest all of her follower IDs, which is all that we really need since we already have all of the full profiles for Tim O'Reilly's followers. We can compute many interesting things without the full profiles for the 40M+ followers, and draw random samples from the full population of follower IDs for testing hypotheses that involve concrete account data.</p>
<p>In this section, we'll compute the followers that they have in common as well as the Jaccard similarity score. (Note that computing the common followers is just a set intersection and is not normalized whereas Jaccard similarity normalizes by introducing a denominator that is the union of the two sets.)</p>
</div>
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Computing-Tim-O'Reilly-and-Lady-Gaga's-Common-Followers-(Set-Intersection)">Computing Tim O'Reilly and Lady Gaga's Common Followers (Set Intersection)<a class="anchor-link" href="#Computing-Tim-O'Reilly-and-Lady-Gaga's-Common-Followers-(Set-Intersection)">&#182;</a></h3>
</div>

<div class="text_cell_render border-box-sizing rendered_html">
<p>Calculating common followers between two or more accounts is as simple as applying a set intersection operation.</p>
</div>
<div class="cell border-box-sizing code_cell vbox">
<div class="input hbox">
<div class="prompt input_prompt">
In&nbsp;[]:
</div>
<div class="input_area box-flex1">
<div class="highlight"><pre><span class="c"># Create sets of ids for each account of interest by flattening out the lists for each</span>
<span class="c"># request that was stored in MongoDB. (The maximum document size in MongoDB is ~16MB so</span>
<span class="c"># there would have been little to gain by trying to store them in a flatter structure </span>
<span class="c"># from the outset since multiple documents would have inevitably been required.)</span>

<span class="n">timoreilly_followers_ids</span> <span class="o">=</span> <span class="nb">set</span><span class="p">([</span><span class="n">fid</span>
                 <span class="k">for</span> <span class="n">ids</span> <span class="ow">in</span> <span class="n">load_from_mongo</span><span class="p">(</span><span class="s">&#39;timoreilly&#39;</span><span class="p">,</span> <span class="s">&#39;followers_ids&#39;</span><span class="p">,</span> <span class="n">projection</span><span class="o">=</span><span class="p">{</span><span class="s">&#39;ids&#39;</span> <span class="p">:</span> <span class="mi">1</span><span class="p">})</span>
                     <span class="k">for</span> <span class="n">fid</span> <span class="ow">in</span> <span class="n">ids</span><span class="p">[</span><span class="s">&#39;ids&#39;</span><span class="p">]</span>
                 <span class="p">])</span>

<span class="n">ladygaga_followers_ids</span> <span class="o">=</span> <span class="nb">set</span><span class="p">([</span><span class="n">fid</span>
                 <span class="k">for</span> <span class="n">ids</span> <span class="ow">in</span> <span class="n">load_from_mongo</span><span class="p">(</span><span class="s">&#39;ladygaga&#39;</span><span class="p">,</span> <span class="s">&#39;followers_ids&#39;</span><span class="p">,</span> <span class="n">projection</span><span class="o">=</span><span class="p">{</span><span class="s">&#39;ids&#39;</span> <span class="p">:</span> <span class="mi">1</span><span class="p">})</span>
                     <span class="k">for</span> <span class="n">fid</span> <span class="ow">in</span> <span class="n">ids</span><span class="p">[</span><span class="s">&#39;ids&#39;</span><span class="p">]</span>
                 <span class="p">])</span>

<span class="c"># Now, calculate the number of followers in common between each person of interest</span>
<span class="c"># by using set intersections.</span>

<span class="n">timoreilly_ladygaga_common_followers_ids</span> <span class="o">=</span> <span class="n">timoreilly_followers_ids</span> <span class="o">&amp;</span> <span class="n">ladygaga_followers_ids</span>

<span class="k">print</span> <span class="s">&quot;Tim O&#39;Reilly and Lady Gaga have {0} followers in common.&quot;</span>\
<span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">timoreilly_ladygaga_common_followers_ids</span><span class="p">))</span>
</pre></div>

</div>
</div>

<div class="vbox output_wrapper">
<div class="output vbox">


<div class="hbox output_area"><div class="prompt"></div>
<div class="box-flex1 output_subarea output_stream output_stdout">
<pre>
Tim O&apos;Reilly and Lady Gaga have 261450 followers in common.

</pre>
</div>
</div>

</div>
</div>

</div>
<div class="text_cell_render border-box-sizing rendered_html">
<p>Interesting. It seems like more than 250k followers is a non-trivial number of followers to have in common. Let's investigate how many of the common followers with Lady Gaga are from Tim O'Reilly's suspect set of followers.</p>
</div>
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Do-suspect-followers-dominate-Tim-O'Reilly's-set-of-followers-in-common-with-Lady-Gaga?">Do suspect followers dominate Tim O'Reilly's set of followers in common with Lady Gaga?<a class="anchor-link" href="#Do-suspect-followers-dominate-Tim-O'Reilly's-set-of-followers-in-common-with-Lady-Gaga?">&#182;</a></h3>
</div>

<div class="cell border-box-sizing code_cell vbox">
<div class="input hbox">
<div class="prompt input_prompt">
In&nbsp;[]:
</div>
<div class="input_area box-flex1">
<div class="highlight"><pre><span class="c"># So, how many of Tim O&#39;Reilly&#39;s suspect followers are in common with</span>
<span class="c"># Lady Gaga? It would be helpful to know if the followers that they have in common</span>
<span class="c"># are or aren&#39;t domainted by the suspect followers.</span>

<span class="c"># For convenience, let&#39;s carve out just the IDs for easy setwise comparison</span>
<span class="n">timoreilly_suspect_followers_ids</span> <span class="o">=</span> <span class="nb">set</span><span class="p">([</span><span class="n">f</span><span class="p">[</span><span class="s">&#39;id&#39;</span><span class="p">]</span> <span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">timoreilly_suspect_followers</span><span class="p">])</span>

<span class="k">print</span> <span class="s">&quot;{0} of Tim O&#39;Reilly&#39;s &#39;suspect&#39; followers are from the set that&#39;s in common with Lady Gaga&#39;s followers&quot;</span>\
<span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">timoreilly_suspect_followers_ids</span> <span class="o">&amp;</span> <span class="n">timoreilly_ladygaga_common_followers_ids</span><span class="p">))</span>
</pre></div>

</div>
</div>

<div class="vbox output_wrapper">
<div class="output vbox">


<div class="hbox output_area"><div class="prompt"></div>
<div class="box-flex1 output_subarea output_stream output_stdout">
<pre>
38575 of Tim O&apos;Reilly&apos;s &apos;suspect&apos; followers are from the set that&apos;s in common with Lady Gaga&apos;s followers

</pre>
</div>
</div>

</div>
</div>

</div>
<div class="text_cell_render border-box-sizing rendered_html">
<p>It would appear that the set of common followers is not dominated by the suspect followers, though there are certainly some. Roughly 15% of the common followers are from the suspect set, leaving 85% (~225k) outside of the suspect category.</p>
</div>
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="Jaccard-Similarity">Jaccard Similarity<a class="anchor-link" href="#Jaccard-Similarity">&#182;</a></h2>
</div>

<div class="text_cell_render border-box-sizing rendered_html">
<p>The Jaccard similarity is perhaps a more useful similarity score to employ when comparing sets of things than just a setwise intersection. For our context, Jaccard similarity is defined as the number of followers in common between the accounts divided by the combined number of unique followers if you were to merge the followers for each of those accounts. The effect here is that you are dividing the number of followers in common by a normalization term. A normalization term is appropriate, especially in this circumstance, because the cardinality of each set of followers is so different.</p>
<p>Computing the Jaccard similarity between any two sets isn't very helpful unless you have some other reference points for comparison, so let's introduce another Twitter account that has something in common with both Tim O'Reilly and Lady Gaga. Marissa Mayer would be an interesting choice since she's a &quot;technology celebrity&quot; like Tim O'Reilly but also a female. (Admittedly that's a contrived explanation, but the original juxtaposition isn't any less contrived, so let's go with it and see what happens.)</p>
<p>Recall that you can harvest all of Marissa Mayer's followers and the corresponding account profiles per the functions previously introduced and hack on the data to produce the very same working variables that we've been working with so far (and then some.)</p>
</div>
<div class="cell border-box-sizing code_cell vbox">
<div class="input hbox">
<div class="prompt input_prompt">
In&nbsp;[]:
</div>
<div class="input_area box-flex1">
<div class="highlight"><pre><span class="c"># There are non-trivial numbers of followers in common, but computing the set</span>
<span class="c"># intersection doesn&#39;t take into account the size of any given set, so let&#39;s</span>
<span class="c"># calculate the Jaccard similarity score, which provides a sort of</span>
<span class="c"># normalization. See http://en.wikipedia.org/wiki/Jaccard_index for details.</span>
<span class="c"># In short, it&#39;s a similarity measurement. The higher the score, the more</span>
<span class="c"># similar two sets are in comparison to two other sets.</span>

<span class="k">def</span> <span class="nf">jaccard</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">):</span> <span class="k">return</span> <span class="mf">1.0</span><span class="o">*</span><span class="nb">len</span><span class="p">(</span><span class="n">x</span> <span class="o">&amp;</span> <span class="n">y</span><span class="p">)</span> <span class="o">/</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span> <span class="o">|</span> <span class="n">y</span><span class="p">)</span>

<span class="n">timoreilly_ladygaga_jaccard</span> <span class="o">=</span> <span class="n">jaccard</span><span class="p">(</span><span class="n">timoreilly_followers_ids</span><span class="p">,</span> <span class="n">ladygaga_followers_ids</span><span class="p">)</span>
<span class="k">print</span> <span class="s">&quot;Tim O&#39;Reilly and Lady Gaga&#39;s Jaccard Index: {0}&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">timoreilly_ladygaga_jaccard</span><span class="p">)</span>

<span class="c"># Need to define this variable, assuming you&#39;ve pulled down the data for this account</span>

<span class="n">marissamayer_followers_ids</span> <span class="o">=</span> <span class="nb">set</span><span class="p">([</span><span class="n">fid</span>
                 <span class="k">for</span> <span class="n">ids</span> <span class="ow">in</span> <span class="n">load_from_mongo</span><span class="p">(</span><span class="s">&#39;marissamayer&#39;</span><span class="p">,</span> <span class="s">&#39;followers_ids&#39;</span><span class="p">,</span> <span class="n">projection</span><span class="o">=</span><span class="p">{</span><span class="s">&#39;ids&#39;</span> <span class="p">:</span> <span class="mi">1</span><span class="p">})</span>
                     <span class="k">for</span> <span class="n">fid</span> <span class="ow">in</span> <span class="n">ids</span><span class="p">[</span><span class="s">&#39;ids&#39;</span><span class="p">]</span>
                 <span class="p">])</span>

<span class="n">marissamayer_ladygaga_jaccard</span> <span class="o">=</span> <span class="n">jaccard</span><span class="p">(</span><span class="n">marissamayer_followers_ids</span><span class="p">,</span> <span class="n">ladygaga_followers_ids</span><span class="p">)</span>
<span class="k">print</span> <span class="s">&quot;Marissa Mayer and Lady Gaga&#39;s Jaccard Index: {0}&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">marissamayer_ladygaga_jaccard</span><span class="p">)</span>

<span class="n">timoreilly_marissamayer_jaccard</span> <span class="o">=</span> <span class="n">jaccard</span><span class="p">(</span><span class="n">timoreilly_followers_ids</span><span class="p">,</span> <span class="n">marissamayer_followers_ids</span><span class="p">)</span>
<span class="k">print</span> <span class="s">&quot;Tim O&#39;Reilly and Marissa Mayer&#39;s Jaccard Index {0}&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">timoreilly_marissamayer_jaccard</span><span class="p">)</span>
</pre></div>

</div>
</div>

<div class="vbox output_wrapper">
<div class="output vbox">


<div class="hbox output_area"><div class="prompt"></div>
<div class="box-flex1 output_subarea output_stream output_stdout">
<pre>
Tim O&apos;Reilly and Lady Gaga&apos;s Jaccard Index: 0.0062353871157
Marissa Mayer and Lady Gaga&apos;s Jaccard Index: 0.00202385195072
Tim O&apos;Reilly and Marissa Mayer&apos;s Jaccard Index 0.0492571582527

</pre>
</div>
</div>

</div>
</div>

</div>
<div class="text_cell_render border-box-sizing rendered_html">
<p>It's not that surprising that Tim O'Reilly and Marissa Mayer have a much higher similarity score to one another than either of them do to Lady Gaga, is it? Given that their statuses as &quot;celebrity technologists&quot; or &quot;business leaders&quot; (amongst other things) are going to drive more interest than a basic variable like gender, the results are as we'd probably have expected them to be.</p>
<p>That said, how do we account for the (slightly) higher similarity score between Tim O'Reilly and Lady Gaga as compared to Lady Gaga and Marissa Mayer? One thought is that Tim O'Reilly's base of followers is substantially larger than Marissa Mayer's so the sheer numbers are probably the deciding factor.</p>
<p>Let's re-run the numbers after adjusting for suspect followers to see if anything changes. (Although we aren't adjusting Lady Gaga's set of followers IDs by subtracting out the suspect followers, this should probably be fine for relative comparisons since it's a constant factor for each of the calculations.)</p>
</div>
<div class="cell border-box-sizing code_cell vbox">
<div class="input hbox">
<div class="prompt input_prompt">
In&nbsp;[]:
</div>
<div class="input_area box-flex1">
<div class="highlight"><pre><span class="n">timoreilly_followers_ids_not_suspect</span> <span class="o">=</span> <span class="n">timoreilly_followers_ids</span> <span class="o">-</span> <span class="n">timoreilly_suspect_followers_ids</span>

<span class="n">timoreilly_ladygaga_jaccard_not_suspect</span> <span class="o">=</span> <span class="n">jaccard</span><span class="p">(</span><span class="n">timoreilly_followers_ids_not_suspect</span><span class="p">,</span> <span class="n">ladygaga_followers_ids</span><span class="p">)</span>
<span class="k">print</span> <span class="s">&quot;Tim O&#39;Reilly and Lady Gaga&#39;s Jaccard Index adjusted for suspect followers: {0}&quot;</span>\
<span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">timoreilly_ladygaga_jaccard_not_suspect</span><span class="p">)</span>

<span class="c"># Need to define this variable, assuming you&#39;ve pulled down the data for this account</span>

<span class="n">marissamayer_followers_ids</span> <span class="o">=</span> <span class="nb">set</span><span class="p">([</span><span class="n">fid</span>
                 <span class="k">for</span> <span class="n">ids</span> <span class="ow">in</span> <span class="n">load_from_mongo</span><span class="p">(</span><span class="s">&#39;marissamayer&#39;</span><span class="p">,</span> <span class="s">&#39;followers_ids&#39;</span><span class="p">,</span> <span class="n">projection</span><span class="o">=</span><span class="p">{</span><span class="s">&#39;ids&#39;</span> <span class="p">:</span> <span class="mi">1</span><span class="p">})</span>
                     <span class="k">for</span> <span class="n">fid</span> <span class="ow">in</span> <span class="n">ids</span><span class="p">[</span><span class="s">&#39;ids&#39;</span><span class="p">]</span>
                 <span class="p">])</span>

<span class="n">marissamayer_followers_ids_not_suspect</span> <span class="o">=</span> <span class="n">marissamayer_followers_ids</span> <span class="o">-</span> <span class="n">marissamayer_suspect_followers_ids</span>

<span class="n">marissamayer_ladygaga_jaccard_not_suspect</span> <span class="o">=</span> <span class="n">jaccard</span><span class="p">(</span><span class="n">marissamayer_followers_ids_not_suspect</span><span class="p">,</span> <span class="n">ladygaga_followers_ids</span><span class="p">)</span>
<span class="k">print</span> <span class="s">&quot;Marissa Mayer and Lady Gaga&#39;s Jaccard Index adjusted for suspect followers: {0}&quot;</span>\
<span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">marissamayer_ladygaga_jaccard_not_suspect</span><span class="p">)</span>

<span class="n">timoreilly_marissamayer_jaccard_not_suspect</span> <span class="o">=</span> <span class="n">jaccard</span><span class="p">(</span><span class="n">timoreilly_followers_ids_not_suspect</span><span class="p">,</span> <span class="n">marissamayer_followers_ids</span><span class="p">)</span>
<span class="k">print</span> <span class="s">&quot;Tim O&#39;Reilly and Marissa Mayer&#39;s Jaccard Index adjusted for suspect followers {0}&quot;</span>\
<span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">timoreilly_marissamayer_jaccard_not_suspect</span><span class="p">)</span>
</pre></div>

</div>
</div>

<div class="vbox output_wrapper">
<div class="output vbox">


<div class="hbox output_area"><div class="prompt"></div>
<div class="box-flex1 output_subarea output_stream output_stdout">
<pre>
Tim O&apos;Reilly and Lady Gaga&apos;s Jaccard Index adjusted for suspect followers: 0.00542391691954
Marissa Mayer and Lady Gaga&apos;s Jaccard Index: 0.00177032283699
Tim O&apos;Reilly and Marissa Mayer&apos;s Jaccard Index 0.0825309743004

</pre>
</div>
</div>

</div>
</div>

</div>
<div class="text_cell_render border-box-sizing rendered_html">
<p>It would appear that the relative comparisons don't change if adjusting for suspect followers. Tim O'Reilly and Lady Gaga are more similar based upon their followers than are Lady Gaga and Marissa Mayer.</p>
</div>
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="What-do-Tim-O'Reilly,-Lady-Gaga,-and-Marissa-Mayer-all-have-in-common?">What do Tim O'Reilly, Lady Gaga, and Marissa Mayer all have in common?<a class="anchor-link" href="#What-do-Tim-O'Reilly,-Lady-Gaga,-and-Marissa-Mayer-all-have-in-common?">&#182;</a></h2>
</div>

<div class="text_cell_render border-box-sizing rendered_html">
<p>Given the previous findings, let's now return to the original questions and compute the set of followers that Tim O'Reilly, Lady Gaga, and Marissa Mayer all have in common by applying the set intersection operator.</p>
</div>
<div class="cell border-box-sizing code_cell vbox">
<div class="input hbox">
<div class="prompt input_prompt">
In&nbsp;[]:
</div>
<div class="input_area box-flex1">
<div class="highlight"><pre><span class="c"># Calculate the number of followers in common between each person of interest</span>
<span class="c"># by using set intersections.</span>

<span class="n">all_common_followers_ids</span> <span class="o">=</span> <span class="n">marissamayer_followers_ids</span> <span class="o">&amp;</span> <span class="n">timoreilly_followers_ids</span> <span class="o">&amp;</span> <span class="n">ladygaga_followers_ids</span>

<span class="k">print</span> <span class="s">&quot;Tim O&#39;Reilly, Lady Gaga, and Marissa Mayer have {0} followers in common.&quot;</span>\
<span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">all_common_followers_ids</span><span class="p">))</span>
</pre></div>

</div>
</div>

<div class="vbox output_wrapper">
<div class="output vbox">


<div class="hbox output_area"><div class="prompt"></div>
<div class="box-flex1 output_subarea output_stream output_stdout">
<pre>
Tim O&apos;Reilly, Lady Gaga, and Marissa Mayer have 26307 followers in common.

</pre>
</div>
</div>

</div>
</div>

</div>
<div class="text_cell_render border-box-sizing rendered_html">
<p>Tim O'Reilly, Lady Gaga, and Marissa Mayer share a little over 26k followers in common, which is approximately 5% of Marissa Mayer's entire follower base. But how many of these common followers may be suspect? Let's backup and compute Marissa Mayer's suspect followers so that we can find out.</p>
</div>
<div class="cell border-box-sizing code_cell vbox">
<div class="input hbox">
<div class="prompt input_prompt">
In&nbsp;[]:
</div>
<div class="input_area box-flex1">
<div class="highlight"><pre><span class="c"># Let&#39;s recycle some code to compute Marissa Mayer&#39;s suspect followers</span>

<span class="n">MIN</span> <span class="o">=</span> <span class="mi">10</span>
<span class="n">marissamayer_suspect_followers</span> <span class="o">=</span> <span class="p">[</span><span class="n">f</span> 
                                <span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">load_from_mongo</span><span class="p">(</span><span class="s">&#39;marissamayer&#39;</span><span class="p">,</span> <span class="s">&#39;followers_profiles&#39;</span><span class="p">,</span> 
                                                          <span class="n">projection</span><span class="o">=</span><span class="p">{</span><span class="s">&#39;followers_count&#39;</span> <span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="s">&#39;id&#39;</span> <span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="s">&#39;_id&#39;</span> <span class="p">:</span> <span class="mi">0</span><span class="p">})</span>
                                <span class="k">if</span> <span class="n">f</span><span class="p">[</span><span class="s">&#39;followers_count&#39;</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">MIN</span><span class="p">]</span>

<span class="k">print</span> <span class="s">&quot;Marissa Mayer has {0} &#39;suspect&#39; followers for MIN={1}&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">marissamayer_suspect_followers</span><span class="p">),</span> <span class="n">MIN</span><span class="p">)</span>

<span class="n">marissamayer_suspect_followers_counts</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">([</span><span class="n">f</span><span class="p">[</span><span class="s">&#39;followers_count&#39;</span><span class="p">]</span> 
                                              <span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">marissamayer_suspect_followers</span><span class="p">],</span> <span class="n">reverse</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>

<span class="n">plt</span><span class="o">.</span><span class="n">hist</span><span class="p">(</span><span class="n">marissamayer_suspect_followers_counts</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s">&quot;Marissa Mayer Suspect Followers&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">&#39;Bins (range of followers)&#39;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s">&#39;Number of followers in each bin&#39;</span><span class="p">)</span>
</pre></div>

</div>
</div>

<div class="vbox output_wrapper">
<div class="output vbox">


<div class="hbox output_area"><div class="prompt"></div>
<div class="box-flex1 output_subarea output_stream output_stdout">
<pre>
Marissa Mayer has 69538 &apos;suspect&apos; followers for MIN=10

</pre>
</div>
</div>

<div class="hbox output_area"><div class="prompt output_prompt">
    Out[12]:</div>
<div class="box-flex1 output_subarea output_pyout">


<pre>
&lt;matplotlib.text.Text at 0xd81c690&gt;
</pre>

</div>
</div>

<div class="hbox output_area"><div class="prompt"></div>
<div class="box-flex1 output_subarea output_display_data">


<img src="
AAALEgAACxIB0t1+/AAAIABJREFUeJzt3XlcVGX/+P/XIOMuiBvojEqyiCgCLkiLihGmpmiaC6bg
Ut7pXZp1m3d39+dOK8Uy79LK7hZMMkvLSiiVzIU0SxQ1NclAAwVEzYVNUAKu3x98PT8RcGAchsX3
8/GYh8w155z3+xpw3nOuc51zdEophRBCCGEGm5pOQAghRN0lRUQIIYTZpIgIIYQwmxQRIYQQZpMi
IoQQwmxSRIQQQphNioi4badPn6ZFixbIbHFxo9jYWDp27Kg9d3Z2Zvv27TWYkagOUkTuIM7OzjRq
1IiLFy+Wavf19cXGxobTp0+btd1OnTqRk5ODTqezRJomTZkyBRsbG6Kjo0u1z507FxsbGyIjI62S
x61kZmYybdo02rdvj52dHV27duXVV1+t6bTKtWDBAiZPnnzLZZydnWnatCktWrSgRYsW2NnZcfbs
2SrF0el0VvsbEdYjReQOotPp6NKlC5999pnWdvToUfLz883+z11YWGip9CpNp9Ph7u7Oxx9/XCqP
zz//HFdXV6t/UBUVFZVpmzt3Lnl5eRw/fpzs7Gyio6NxdXW1al6WpNPp+Pbbb8nJySEnJ4fs7Gyc
nJxqOq1Kq4m/0zuFFJE7zKRJk0p9+EZGRhIaGlpqKGrTpk34+vpib29Pp06dWLhwofZaSkoKNjY2
rFq1is6dO/PAAw9w6tQpbGxsKC4uBmD16tW4uLhgZ2dHly5d+PTTTwE4ceIEAwcOpGXLlrRt25YJ
EyZo250zZw6dOnXC3t6ePn368OOPP96yHyNGjODHH38kMzMTgJiYGLy9vXF0dNT6cvLkSe6//37a
tGlD27ZtmTRpEllZWQAsXbqURx55pNQ2Z8+ezdNPPw1AVlYW06dPp0OHDhiNRv7v//6vVP/uvfde
nnnmGdq0aVPq/bkuPj6ekJAQ7O3tAejatStjxowp9R5e3x5AQEAAERERJt8nGxsb3nrrLVxcXGjb
ti3PPfdcqd/dqlWr8PT0pFWrVgwZMqTU3uWxY8cICgqidevWODk5ER4eznfffUd4eDjr16+nRYsW
+Pr63vJ9v9m1a9d4+umnMRgMGAwG5s6dS0FBwW2tN3DgQL766isA9uzZg42NDZs3bwZg+/btpXK8
VX9tbGxYuXIlbm5udO3aFSgp7o6Ojtjb29OzZ0+OHTtWpf6KsqSI3GH8/f3Jzs7m+PHjFBUVsX79
eiZNmlRqmebNm/PJJ5+QlZXFpk2bePfdd4mKiiq1zK5duzh+/DjfffddqQ+xK1euMGfOHGJiYsjO
zubnn3/Gx8cHgP/7v/9jyJAhZGZmkp6ezuzZs7X1/Pz8OHz4MJcvX2bixImMHTv2lh9GjRs3ZuTI
kaxbtw6Ajz/+mNDQUIBSeyIvvPACGRkZ/Pbbb6SmprJgwQIAJk+eTExMjFZUCgsLWb9+PWFhYUDJ
kFnDhg05efIkhw4dYuvWrXz44Yfadvft24eLiwvnz5/nX//6V7nv8wsvvMDq1atJSkqqsB/X3TjU
c6v3CWDjxo0cOHCAgwcPEhUVxapVqwCIiooiPDycr7/+mgsXLtC/f39CQkIAyMnJ4YEHHmDYsGFk
ZGRw4sQJAgMDefDBB/nXv/7FhAkTyMnJ4dChQxXmWN4xr0WLFrFv3z4OHz7M4cOH2bdvH6+88orJ
/t5qvYCAAGJjYwH44Ycf6NKlC7t27dKeBwQEmOzvdVFRUezfv5+EhAS+++47du/eTVJSEllZWXzx
xRe0bt3aZK7CBCXuGM7Ozmrbtm3qlVdeUc8//7zasmWLGjx4sCosLFQ6nU6dOnWq3PXmzJmj5s6d
q5RSKjk5Wel0OpWcnKy9fr2tqKhI5ebmqpYtW6ovv/xS5eXlldpOaGiomjFjhkpLSzOZq4ODgzpy
5Ei5r02ZMkX9+9//Vj/++KO6++67VWZmpnJ0dFT5+fnqvvvuU5GRkeWu9/XXXytfX1/t+ZAhQ9QH
H3yglFLqm2++UZ6enkoppc6ePasaNWqk8vPztWU//fRTNWjQIKWUUh999JHq1KnTLfPPz89Xixcv
Vr1791Z6vV65urqqLVu2KKVKv1/XBQQEqIiICKXUrd8nnU6nvvvuO+35ypUrVWBgoNaf69tQSqmi
oiLVtGlTderUKfXpp5+qXr16lZvriy++qCZNmnTL/nTu3Fk1b95ctWzZUrVs2VI9/PDDSimlunTp
ovVLKaW+++475ezsrJRSaufOncpoNGqvOTs7q+3btyullHJxcalwvW3btqmePXtqffrwww+Vv7+/
UkqpAQMGqK+//vqW/T19+rT2Xu3cuVN7fceOHcrd3V3t3bu31Hsvbo/sidxhdDodkydPZu3ateUO
ZQHExcUxaNAg2rVrR8uWLXnvvffKHIy/cdbNjZo1a8b69ev53//+R4cOHRg+fDi///47AK+99hpK
Kfz8/OjRowcfffSRtt7rr7+Op6cnLVu2xMHBgaysLC5cuHDLftx77738+eefvPLKK4wYMYLGjRuX
WubcuXNMmDABo9GIvb09kydPLtWPsLAwPvnkEwA++eQTbU/m1KlT/PXXX7Rv3x4HBwccHBx44okn
+PPPP032/7rGjRvz/PPPEx8fz8WLFxk3bhxjx47Vht9u5Vbv082xO3XqxJkzZ7S858yZo+V8/Vt2
eno6aWlpdOnSxWTsiuh0OqKiorh8+TKXL1/WhpsyMjLo3LlzufncypkzZypc7+677yYxMZHz58/z
yy+/EBoaSmpqKhcvXmT//v0MGDDAZH+vu/G9GjRoEE8++SR///vfcXR05G9/+xs5OTlmvyeihBSR
O1CnTp3o0qULW7ZsYfTo0WVenzhxIqNGjSItLY3MzEyeeOKJUuP3wC0PXg8ePJitW7dy9uxZPDw8
ePzxxwFwdHTk/fffJz09nffee49Zs2bxxx9/sHv3bpYuXcoXX3xBZmYmly9fxt7evlJThidNmsR/
//tfrQDc6F//+hcNGjTg119/JSsrizVr1pTqx8iRIzly5Ai//vormzZt4tFHHwVKPniuz2K7/qGZ
lZXF0aNHK9X/m7Vo0YLnn3+eK1eukJycTLNmzQDIy8vTlrlxplNF79N1N477nz59GoPBAJT8Xt9/
/30t58uXL3PlyhXuvvtuOnbsWGobN7KxMf9joEOHDqSkpJTKp0OHDre1XtOmTenduzdvvvkmXl5e
6PV67rnnHpYtW4arqyutWrW6ZX/9/f217d78e3rqqaeIj48nISGBxMREli5danbfRQkpIneoiIgI
duzYQZMmTcq8lpubi4ODAw0bNmTfvn18+umnlf7QPH/+PFFRUVy5cgW9Xk+zZs1o0KABAF988QVp
aWkAtGzZEp1Oh42NDTk5Odja2tKmTRsKCgp46aWXyM7OrjCGUkorMLNnz2bbtm3079+/3H40a9YM
Ozs70tPTy3xgNGnShDFjxjBx4kT69euH0WgEoH379gwePJhnnnmGnJwciouLOXnypDYuXxkvv/wy
8fHxFBQUcPXqVZYvX46DgwNdu3albdu2GAwG1qxZQ1FREatWreLkyZPauhW9T9e9/vrrZGZmkpqa
yooVKxg/fjwATzzxBIsXLyYhIQFAG/cHGD58OBkZGSxfvpxr166Rk5PDvn37gJKilZKSYtZ5PiEh
IbzyyitcuHCBCxcu8NJLL5mcLlyZ9QYOHMg777zDwIEDgZLjJG+//bb23FR/yxMfH09cXBx//fUX
TZs2pXHjxtrfpjCfFJE7VJcuXejVq5f2/MYisXLlSv7zn/9gZ2fHyy+/rH1IlbfszW3FxcW88cYb
GAwGWrduze7du3n33XeBkv/E/v7+tGjRgpEjR7JixQqcnZ0ZMmQIQ4YMwd3dHWdnZ5o0aUKnTp0q
zP3Gg9AODg4MGjSo3OVefPFFDh48iL29PSNGjGDMmDFlcg8LC+PXX38t88H38ccfU1BQoM38GTt2
rLa3UJnzHWxsbJg6dapWMLZv386mTZto2rQpAB988AFLly6lTZs2JCQkcO+992rrVvQ+XTdy5Eh6
9+6Nr68vw4cPZ9q0aQCMGjWK+fPnM2HCBOzt7fHy8uK7774DSiZLfP/993zzzTe0b98ed3d37eD1
2LFjAWjdujV9+vS5Zb9u9u9//5s+ffrQs2dPevbsSZ8+ffj3v/+tvV7R+2RqvYEDB5Kbm6sNXQ0Y
MIArV65oz031t7zY2dnZzJgxg1atWuHs7EybNm2YN29elforytIpc75+CFFPpKam4uHhwblz52je
vHlNp2OSjY0NJ06cuK3jG0JYksX3RKZNm4ajoyNeXl6l2t966y26detGjx49mD9/vtYeHh6Om5sb
Hh4ebN26VWs/cOAAXl5euLm5MWfOHK392rVrjB8/Hjc3N/z9/Tl16pSluyDuEMXFxSxbtoyQkJA6
UUCEqJUsPd1r165d6uDBg6pHjx5a244dO9QDDzygCgoKlFJKnT9/Ximl1LFjx5S3t7cqKChQycnJ
ysXFRRUXFyullOrbt6+Ki4tTSik1dOhQbTrgO++8o2bOnKmUUmrdunVq/Pjxlu6CuAPk5uaqZs2a
qR49elRqynFtYWNjo06ePFnTaQihsfieSP/+/XFwcCjV9u677/L888+j1+sBaNu2LVByIlBISAh6
vR5nZ2dcXV2Ji4sjIyODnJwc/Pz8AAgNDWXjxo0AREdHayeEjRkzRi7oJszSrFkzcnNzOXr0qDa7
qS4oKiqSoSxRq1jlwHpSUhK7du3C39+fgIAA4uPjgZK54tdnxAAYjUbS09PLtBsMBm3ud3p6ujb3
29bWFnt7ey5dumSNbgghhLiJrTWCFBYWcvnyZfbu3cv+/fsZN25chXPWLUWuFiqEEOZRVZhvZZU9
EaPRqJ3U1rdvX2xsbLhw4QIGg4HU1FRtubS0NIxGIwaDQZsnf2M7lOyVXD/ZqrCwkKysLO3ko5up
/3c+QX18vPjiizWeg/RP+nen9e1O6F9VWaWIjBo1ih07dgCQmJhIQUEBbdq0ITg4mHXr1lFQUEBy
cjJJSUn4+fnh5OSEnZ0dcXFxKKVYs2YNI0eOBCA4OFi7X8SGDRsIDAy0RheEEEKUw+LDWSEhIfzw
ww9cvHiRjh078tJLLzFt2jSmTZuGl5cXDRs21C5F7unpybhx4/D09MTW1paVK1dqw1ArV65kypQp
5OfnM2zYMIYMGQLA9OnTmTx5Mm5ubrRu3Vq7iqsQQgjrq7cnG+p0OrN2zeqK2NhY7ZLY9ZH0r+6q
z32D+t+/qn52ShERQgihqepnp1w7SwghhNmkiAghhDCbFBEhhBBmkyIihBDCbFJEhBBCmE2KiBBC
CLNJERFCCGE2KSJCCCHMJkVECCGE2aSICCGEMJsUESGEEGaTIiKEEMJsUkSEEEKYTYqIEEIIs0kR
qaPs7Fqh0+ms9rCzK/8WxEKIO5vcT6SOKrkDpDX7V7/fTyFECbmfiBBCCKuRIiKEEMJsFi8i06ZN
w9HRES8vrzKvLVu2DBsbGy5duqS1hYeH4+bmhoeHB1u3btXaDxw4gJeXF25ubsyZM0drv3btGuPH
j8fNzQ1/f39OnTpl6S4IIYSoJIsXkalTpxITE1OmPTU1le+//57OnTtrbQkJCaxfv56EhARiYmKY
NWuWNhY3c+ZMIiIiSEpKIikpSdtmREQErVu3Jikpiblz5zJ//nxLd0EIIUQlWbyI9O/fHwcHhzLt
zzzzDK+99lqptqioKEJCQtDr9Tg7O+Pq6kpcXBwZGRnk5OTg5+cHQGhoKBs3bgQgOjqasLAwAMaM
GcP27dst3QUhhBCVZJVjIlFRURiNRnr27Fmq/cyZMxiNRu250WgkPT29TLvBYCA9PR2A9PR0Onbs
CICtrS329valhseEEEJYj211B8jLy2Px4sV8//33Wpu1poouWLBA+zkgIICAgACrxBVCiLoiNjaW
2NhYs9ev9iJy8uRJUlJS8Pb2BiAtLY3evXsTFxeHwWAgNTVVWzYtLQ2j0YjBYCAtLa1MO5TslZw+
fZoOHTpQWFhIVlYWrVqVfyLcjUVECCFEWTd/wV64cGGV1q/24SwvLy/OnTtHcnIyycnJGI1GDh48
iKOjI8HBwaxbt46CggKSk5NJSkrCz88PJycn7OzsiIuLQynFmjVrGDlyJADBwcFERkYCsGHDBgID
A6u7C0IIISpg8T2RkJAQfvjhBy5evEjHjh156aWXmDp1qvZ6yZnWJTw9PRk3bhyenp7Y2tqycuVK
7fWVK1cyZcoU8vPzGTZsGEOGDAFg+vTpTJ48GTc3N1q3bs26dess3QUhhBCVJJc9qaPksidCiOpQ
1c/OSu2JpKenk5KSQlFREUopdDodAwYMMDtJIYQQ9YPJIjJ//nzWr1+Pp6cnDRo00NqliAghhDA5
nOXu7s7Ro0dp1KiRtXKyCBnOsnjEev1+CiFKWPwqvi4uLhQUFNxWUkIIIeonk8NZTZo0wcfHh8DA
QG1vRKfTsWLFimpPTgghRO1msogEBwcTHBxcqu3GabpCCCHuXDLFt46SYyJCiOpgsSm+Y8eO5Ysv
vij3viA6nY4jR46Yl6EQQoh6o8I9kTNnztChQwdSUlLKXdHZ2bka07p9sidi8Yj1+v0UQpSo6mdn
pYazzp49S1xcHDY2NvTt2xcnJ6fbStIapIhYPGK9fj+FECUsPsX3ww8/xM/Pj6+++ooNGzbQr18/
IiIibitJIYQQ9UOlTjb8+eefad26NQAXL17k7rvvJjEx0SoJmkv2RCwesV6/n0KIEhbfE2nTpg3N
mzfXnjdv3pw2bdqYl50QQoh6pcLZWcuWLQPA1dWVfv36MWrUKKDkVrc33+ZWCCHEnanCIpKTk4NO
p8PFxYUuXbpoJxiOHDlSTjYUQggByMmGdZYcExFCVAeLHxMRQgghKiJFRAghhNmkiAghhDCbySJy
/vx5Fi1axOOPP87UqVOZOnUq06ZNq3D5adOm4ejoWOqaW/PmzaNbt254e3szevRosrKytNfCw8Nx
c3PDw8ODrVu3au0HDhzAy8sLNzc35syZo7Vfu3aN8ePH4+bmhr+/P6dOnapyp4UQQliGySIycuRI
srOzCQoK4qGHHtIeFZk6dSoxMTGl2gYPHsyxY8c4fPgw7u7uhIeHA5CQkMD69etJSEggJiaGWbNm
aQd0Zs6cSUREBElJSSQlJWnbjIiIoHXr1iQlJTF37lzmz59vdueFEELcHpP3E8nPz+fVV1+t9Ab7
9+9f5qKNQUFB2s/9+vXjyy+/BErOOQkJCUGv1+Ps7IyrqytxcXF07tyZnJwc/Pz8AAgNDWXjxo0M
GTKE6OhoFi5cCMCYMWN48sknK52bEEIIyzJZRIYPH86mTZtuufdRFatWrSIkJAQouVKwv7+/9prR
aCQ9PR29Xo/RaNTaDQYD6enpAKSnp9OxY8eS5G1tsbe359KlS7Rq1apMrAULFmg/BwQEEBAQYJE+
CCFEfREbG0tsbKzZ61dYRJo3b66dVLh48WIaNmyIXq8HSuYRZ2dnVznYokWLaNiwIRMnTjQz3aq5
sYgIIYQo6+Yv2NdHeiqrwiKSm5trdlLlWb16NZs3b2b79u1am8FgIDU1VXuelpaG0WjEYDCQlpZW
pv36OqdPn6ZDhw4UFhaSlZVV7l6IEEKI6mfywPrXX39NZmam9jwzM5ONGzdWKUhMTAxLly4lKiqK
xo0ba+3BwcGsW7eOgoICkpOTSUpKws/PDycnJ+zs7IiLi0MpxZo1axg5cqS2TmRkJAAbNmwgMDCw
SrkIIYSwIGVCz549y7R5e3tXuPyECRNU+/btlV6vV0ajUUVERChXV1fVqVMn5ePjo3x8fNTMmTO1
5RctWqRcXFxU165dVUxMjNYeHx+vevTooVxcXNRTTz2ltV+9elWNHTtWubq6qn79+qnk5ORy86hE
1+o0QIGy4qN+v59CiBJV/b9u8tpZPXv2LHM/dS8vL44ePVpthc0S5NpZFo9Yr99PIUQJi187q3fv
3jzzzDOcPHmSEydOMHfuXHr37n1bSQohhKgfTBaRt956C71ez/jx45kwYQKNGzfmnXfesUZuQggh
ajm5FHwdJcNZQojqUNXPTpMnG54/f57XXnuNhIQE8vPztSA7duwwP0shhBD1gsnhrEcffRQPDw/+
+OMPFixYgLOzM3369LFGbkIIIWo5k8NZvXr14uDBg6VmafXp04f4+HirJGguGc6yeMR6/X4KIUpY
fDirYcOGADg5OfHtt9/SoUMHLl++bH6GQggh6g2TReSFF14gMzOTZcuW8dRTT5Gdnc0bb7xhjdyE
EELUcjI7q46S4SwhRHWw+MmGv//+O4GBgXTv3h2AI0eO8Morr5ifoRBCiHrDZBF5/PHHtUvBQ8kl
Tz777LNqT0wIIUTtZ7KI5OXl0a9fP+25TqfT7isihBDizmayiLRt25YTJ05ozzds2ED79u2rNSkh
hBB1g8kD6ydPnmTGjBn8/PPPtGzZkrvuuou1a9fi7OxspRTNIwfWLR6xXr+fQogSVf3srPTsrNzc
XIqLi7GzszM7OWuSImJpeqDQatFatHAgO/uS1eIJIUpUWxGpa6SIWDyi1ePV59+fELWVxaf4CiGE
EBWRIiKEEMJsJi97ArBnzx5SUlIoLCwZE9fpdISGhlZrYkIIIWo/k3sikyZNYt68eezZs4f4+Hji
4+PZv39/hctPmzYNR0dHvLy8tLZLly4RFBSEu7s7gwcPJjMzU3stPDwcNzc3PDw82Lp1q9Z+4MAB
vLy8cHNzY86cOVr7tWvXGD9+PG5ubvj7+3Pq1Kkqd1oIIYSFKBM8PDxUcXGxqcU0u3btUgcPHlQ9
evTQ2ubNm6deffVVpZRSS5YsUfPnz1dKKXXs2DHl7e2tCgoKVHJysnJxcdFi9e3bV8XFxSmllBo6
dKjasmWLUkqpd955R82cOVMppdS6devU+PHjy82jEl2r0wAFyooP68cTQlhfVf/vmdwT6dGjBxkZ
GZUuSv3798fBwaFUW3R0NGFhYQCEhYWxceNGAKKioggJCUGv1+Ps7IyrqytxcXFkZGSQk5ODn58f
AKGhodo6N25rzJgxbN++vdK5CSGEsCyTx0T+/PNPPD098fPzo1GjRkDJMZHo6OhKBzl37hyOjo4A
ODo6cu7cOQDOnDmDv7+/tpzRaCQ9PR29Xo/RaNTaDQYD6enpAKSnp9OxY8eS5G1tsbe359KlS7Rq
1apM3AULFmg/BwQEEBAQUOmchRDiThAbG0tsbKzZ65ssIjd+EFuCTqf7f+c4VD9L5y6EEPXNzV+w
Fy5cWKX1TRYRS3x7d3R05OzZszg5OZGRkUG7du2Akj2M1NRUbbm0tDSMRiMGg4G0tLQy7dfXOX36
NB06dKCwsJCsrKxy90KEEEJUvwqPidx7770ANG/enBYtWpR6VPXSJ8HBwURGRgIQGRnJqFGjtPZ1
69ZRUFBAcnIySUlJ+Pn54eTkhJ2dHXFxcSilWLNmDSNHjiyzrQ0bNhAYGFj1XgshhLAMSx/ZnzBh
gmrfvr3S6/XKaDSqVatWqYsXL6rAwEDl5uamgoKC1OXLl7XlFy1apFxcXFTXrl1VTEyM1h4fH696
9OihXFxc1FNPPaW1X716VY0dO1a5urqqfv36qeTk5HLzqIau1SrI7CwhRDWo6v89uXZWHSXXzhJC
VAe5dpYQQgirkSIihBDCbCaLSG5uLkVFRQD8/vvvREdH89dff1V7YkIIIWo/k8dEevXqxY8//sjl
y5e599576du3Lw0bNmTt2rXWytEsckzE4hGtHq8+//6EqK0sfkxEKUXTpk356quvmDVrFl988QW/
/vrrbSUphBCifqjUMZGff/6ZtWvX8tBDDwFQXFxcrUkJIYSoG0wWkTfffJPw8HAefvhhunfvzsmT
Jxk0aJA1chNCCFHL3fKYSFFREc899xzLli2zZk4WIcdELB7R6vHq8+9PiNrKosdEGjRowJ49e+Q/
sxBCiHKZvACjj48PI0eOZOzYsTRt2hQoqVSjR4+u9uSEEELUbiaLyNWrV2nVqhU7duwo1S5FRAgh
hFw7q46SYyJCiOpg8fNEfv/9dwIDA+nevTsAR44c4ZVXXjE/QyGEEPWGySLy+OOPs3jxYho2bAiA
l5cXn332WbUnJoQQovYzWUTy8vLo16+f9lyn06HX66s1KSGEEHWDySLStm1bTpw4oT3fsGED7du3
r9akhBBC1A0mD6yfPHmSGTNm8NNPP+Hg4MBdd93F2rVrcXZ2tlKK5pED6xaPaPV49fn3J0RtVdXP
zkrPzrpy5QpFRUVVvr96TZEiYvGIVo6nBwqtFq1FCweysy9ZLZ4QtZXFi4iLiwv+/v7079+f/v37
a7O0ajspIhaPWO/j1ee/FyEqy+JTfI8dO8aMGTO4ePEi//jHP3BxcWHUqFFmJRceHk737t3x8vJi
4sSJXLt2jUuXLhEUFIS7uzuDBw8mMzOz1PJubm54eHiwdetWrf3AgQN4eXnh5ubGnDlzzMpFCCHM
YWfXCp1OZ7WHnV2rmu7yLZksIra2tuj1eho0aICNjQ1t27bF0dGxyoFSUlL44IMPOHjwIEePHqWo
qIh169axZMkSgoKCSExMJDAwkCVLlgCQkJDA+vXrSUhIICYmhlmzZmnVcebMmURERJCUlERSUhIx
MTFVzkcIIcyRk3OZkr1k6zxK4tVeJouInZ0dc+fO5a677iIyMpK9e/fy3nvvVTmQnZ0der2evLw8
CgsLycvLo0OHDkRHRxMWFgZAWFgYGzduBCAqKoqQkBD0ej3Ozs64uroSFxdHRkYGOTk5+Pn5ARAa
GqqtI4QQwrpMXjvrs88+Y/fu3axcuZIPPviAe+65hwEDBvDAAw9UKVCrVq149tln6dSpE02aNOHB
Bx8kKCiIc+fOaXs2jo6OnDt3DoAzZ87g7++vrW80GklPT0ev12M0GrV2g8FAenp6uTEXLFig/RwQ
EEBAQEBoFMYtAAAeVElEQVSVchZCiPouNjaW2NhYs9c3WURGjhzJyJEjOX78OJs3b+bNN9/ktdde
4+rVq1UKdPLkSd58801SUlKwt7dn7NixfPLJJ6WWuT4GaCk3FhEhhBBl3fwFe+HChVVa3+Rw1pgx
Y3BxcWH27Nnk5eWxZs0aLl+u+hhdfHw899xzD61bt8bW1pbRo0fz888/4+TkxNmzZwHIyMigXbt2
QMkeRmpqqrZ+WloaRqMRg8FAWlpaqXaDwVDlfIQQQtw+k0Xkn//8J4mJiWzdupV///vfDBw4kCZN
mlQ5kIeHB3v37iU/Px+lFNu2bcPT05MRI0YQGRkJQGRkpDbzKzg4mHXr1lFQUEBycjJJSUn4+fnh
5OSEnZ0dcXFxKKVYs2aN2bPFhBBC3B6Tw1ne3t68/fbb7Nq1CyjZ9XniiSeqfP0sb29vQkND6dOn
DzY2NvTq1YsZM2aQk5PDuHHjiIiIwNnZmc8//xwAT09Pxo0bh6enJ7a2tqxcuVIb6lq5ciVTpkwh
Pz+fYcOGMWTIkKr2WwghhAWYPNlw+vTpFBYWEhYWpn3zt7W15cMPP7RWjmaRkw0tHrHex6vPfy/C
cmri/541/zYtfsZ6z549OXLkiMm22kaKiMUj1vt49fnvRViOFJHSKnWy4Y1X8T158iS2tiZHwYQQ
QtwBTFaDpUuXcv/993PXXXcBJWeef/TRR9WemBBCiNqvUlfxvXr1Kr///js6nY6uXbvSqFEja+R2
W2Q4y+IR6328+vz3IixHhrNuWr6iIvLll19qG7txo9dnSI0ePdoC6VYfKSIWj1jv49XnvxdhOVJE
SqtwOOubb7655dnjtb2ICCGEqH6VvilVXSN7IhaPWO/j1ee/F2E5sidSWoV7IsuWLSuzsRuHt555
5pnby1QIIUSdV2ERycnJKXc463oREUIIIWQ4q46S4SxLk3u6i8qR4azSTJ5smJqaysMPP0zbtm1p
27YtY8aMKXUVXSHqh0LkbnVCVJ3JIjJ16lSCg4M5c+YMZ86cYcSIEUydOtUauQkhhKjlTA5neXt7
c/jwYZNttY0MZ1k8osSzcLz6/PdZn8lwVmkm90Rat27NmjVrKCoqorCwkE8++YQ2bdrcVpJCCCHq
B5N7IikpKTz11FPs3bsXgHvuuYe33nqLTp06WSVBc8meiMUjSjwLx6vPf5/1meyJlFbhFN/58+fz
6quvsm/fPr755huLJCeEEKJ+qXA4a9OmTSilCA8Pt2Y+Qggh6pAK90SGDh2Kg4MDubm5tGjRotRr
Op2O7Ozsak9OCCFE7WbymEhwcDDR0dHWysdi5JiIxSNKPAvHq89/n/WZHBMpzeTsLEsWkMzMTB55
5BG6deuGp6cncXFxXLp0iaCgINzd3Rk8eDCZmZna8uHh4bi5ueHh4cHWrVu19gMHDuDl5YWbmxtz
5syxWH5CCCGqxmQRsaQ5c+YwbNgwfvvtN44cOYKHhwdLliwhKCiIxMREAgMDWbJkCQAJCQmsX7+e
hIQEYmJimDVrllYdZ86cSUREBElJSSQlJRETE2PNbgghhPh/rFZEsrKy2L17N9OmTQNK7t1ub29P
dHQ0YWFhAISFhbFx40YAoqKiCAkJQa/X4+zsjKurK3FxcWRkZJCTk4Ofnx8AoaGh2jpCCCGsq8ID
64GBgWzfvp3nnnuO11577bYDJScn07ZtW6ZOncrhw4fp3bs3b775JufOncPR0REAR0dHzp07B8CZ
M2fw9/fX1jcajaSnp6PX6zEajVq7wWAgPT293JgLFizQfg4ICCAgIOC2+yGEEPVJbGwssbGxZq9f
YRHJyMjgp59+Ijo6mgkTJpS5BHyvXr2qFKiwsJCDBw/y9ttv07dvX55++mlt6Oo6nU5n0cvM31hE
hKhdbK16SwW5arCoyM1fsBcuXFil9SssIgsXLuSll14iPT2dZ599tszrO3furFIgo9GI0Wikb9++
ADzyyCOEh4fj5OTE2bNncXJyIiMjg3bt2gElexipqana+mlpaRiNRgwGQ6mrCKelpWEwGKqUixA1
7/pVg60jJ0fuASSqR4XHRMaOHUtMTAzz5s1j586dZR5V5eTkRMeOHUlMTARg27ZtdO/enREjRhAZ
GQlAZGQko0aNAkqmFq9bt46CggKSk5NJSkrCz88PJycn7OzsiIuLQynFmjVrtHWEEEJYV6VuShUV
FcWuXbvQ6XQMHDiQESNGmBXs8OHDPPbYYxQUFODi4sJHH31EUVER48aN4/Tp0zg7O/P555/TsmVL
ABYvXsyqVauwtbVl+fLlPPjgg0DJFN8pU6aQn5/PsGHDWLFiRdmOyXkilo4o8ep4vPr8/8Ga5DyR
m5Y3VUT++c9/sn//fh599FGUUqxbt44+ffrU+suhSBGxeESJV8fj1ef/D9YkReSm5U0VES8vL375
5RcaNGgAQFFRET4+Phw9evT2Mq1mUkQsHlHi1fF49fn/gzVJESnN5HkiOp2u1FnkmZmZVp1VIoSw
BFtt9mN1P+zsWtV0Z4UVVTg767rnn3+eXr16MWjQIJRS/PDDD2Wm5gohajvrzQaTmWB3lkodWD9z
5gz79+9Hp9PRt29f2rdvb43cbosMZ1k8osSTeJWOJf/3LBqxVg9nVaqI1EVSRCweUeJJvErHkv97
Fo1Yq4uIVS/AKIQQon6RIiKEEMJstywihYWFdO3a1Vq5CCGEqGNuWURsbW3x8PDg1KlT1spHCCFE
HWJyiu+lS5fo3r07fn5+NGvWDCg58FIXb5krhBDCskwWkZdffrlMm5xsKISomFzm/k5SqSm+KSkp
nDhxggceeIC8vDwKCwuxs7OzRn5mkym+Fo8o8SReLYxVEs/aU2Dre/8sOsX3/fffZ+zYsfztb38D
Su7f8fDDD5ufoRBCiHrDZBF55513+PHHH7U9D3d3d86fP1/tiQkhhKj9TB4TadSoEY0aNdKeFxYW
yjERIUQtYt1jMKI0k3siAwcOZNGiReTl5fH9998zduxYs29KJYQQlnf94pLWeogbmTywXlRURERE
BFu3bgXgwQcf5LHHHqv1lV8OrFs8osSTeLUw1p0RrzYfWK/U7Kxr165x/PhxdDodHh4eNGzY8LaS
tAYpIhaPKPEkXi2MdWfEq81FxOQxkU2bNvHEE0/QpUsXAP744w/ee+89hg0bZn6WQggh6gWTx0Se
eeYZdu7cyQ8//MAPP/xAbGwsc+fONTtgUVERvr6+2nGVS5cuERQUhLu7O4MHDy51F8Xw8HDc3Nzw
8PDQhtMADhw4gJeXF25ubsyZM8fsXIQQQtwek0XEzs4OV1dX7XmXLl1u60TD5cuX4+npqR1TWbJk
CUFBQSQmJhIYGKjdNTEhIYH169eTkJBATEwMs2bN0naxZs6cSUREBElJSSQlJRETE2N2PkIIIcxX
YRH58ssv+fLLL+nTpw/Dhg1j9erVrF69muHDh9OnTx+zgqWlpbF582Yee+wxrSBER0cTFhYGQFhY
GBs3bgQgKiqKkJAQ9Ho9zs7OuLq6EhcXR0ZGBjk5Ofj5+QEQGhqqrSOEEMK6Kjwm8s0332h7C+3a
teOHH34AoG3btly9etWsYHPnzmXp0qVkZ2drbefOncPR0REAR0dHzp07B5Tcktff319bzmg0kp6e
jl6vx2g0au0Gg4H09PRy4y1YsED7OSAggICAALPyFkKI+io2NpbY2Fiz16+wiKxevdrsjZbn22+/
pV27dvj6+laYsE6ns+jU4RuLiBBCiLJu/oK9cOHCKq1vcnbWH3/8wVtvvUVKSgqFhYWAeZeC/+mn
n4iOjmbz5s1cvXqV7OxsJk+ejKOjI2fPnsXJyYmMjAzatWsHlOxhpKamauunpaVhNBoxGAykpaWV
ajcYDFXKRQghhIUoE7y8vNTy5cvV9u3b1c6dO9XOnTtVbGysqdVuKTY2Vg0fPlwppdS8efPUkiVL
lFJKhYeHq/nz5yullDp27Jjy9vZW165dU3/88Yfq0qWLKi4uVkop5efnp/bu3auKi4vV0KFD1ZYt
W8rEqETX6jRAgbLiQ+JJvNoY686IZ+3PlqowuSfSuHFjZs+ebfHidX3Y6p///Cfjxo0jIiICZ2dn
Pv/8cwA8PT0ZN24cnp6e2NrasnLlSm2dlStXMmXKFPLz8xk2bBhDhgyxeH5CCCFMM3nG+po1azh5
8iQPPvhgqQsx9urVq9qTux1yxrrFI0o8iVcLY90Z8az5WWbxM9aPHTvGmjVr2LlzJzY2//+M4J07
d5qXoRBCiHrD5J6Ii4sLv/32W524XtaNZE/E4hElnsSrhbHujHi1eU/E5BnrXl5eXL58+baSEkII
UT+ZHM66fPkyHh4e9O3bVzsmYs4UXyGEEPWPySJS1RNPhBBC3DkqdT+RukiOiVg8osSTeLUw1p0R
rzYfEzG5J9K8eXPt/IyCggL++usvmjdvXur6V0IIIe5MJotIbm6u9nNxcTHR0dHs3bu3WpMSQghR
N5g1nOXj48Mvv/xSHflYjAxnWTyixJN4tTDWnRGvTg9nffnll9rPxcXFHDhwgCZNmpiXnRBCiHrF
ZBG58b4itra2ODs7ExUVVe2JCSGEqP1kdlYdJcNZEq/2xqvPfauZeHVyOKui80Ou75X85z//qWJq
Qggh6psKi0izZs3K3GXwypUrREREcOHCBSkiQgghKjeclZ2dzYoVK4iIiGDcuHE8++yz2h0IaysZ
zrJ4RIkn8WphrDsjXp0czgK4ePEib7zxBmvXriU0NJSDBw/i4OBw20kKIYSoHyosIv/4xz/4+uuv
mTFjBkeOHKFFixbWzEsIIUQdUOFwlo2NDQ0bNkSv15ddSaer9Zc9keEsi0eUeBKvFsa6M+LVyeGs
4uJiiyQkhBCi/jJ5UypLSU1NZdCgQXTv3p0ePXqwYsUKAC5dukRQUBDu7u4MHjyYzMxMbZ3w8HDc
3Nzw8PBg69atWvuBAwfw8vLCzc2NOXPmWKsLQgghbqasJCMjQx06dEgppVROTo5yd3dXCQkJat68
eerVV19VSim1ZMkSNX/+fKWUUseOHVPe3t6qoKBAJScnKxcXF1VcXKyUUqpv374qLi5OKaXU0KFD
1ZYtW8rEs2LXagSgQFnxIfEkXm2MdWfEs/ZnS1VYbU/EyckJHx8foOTy8t26dSM9PZ3o6GjCwsIA
CAsLY+PGjQBERUUREhKCXq/H2dkZV1dX4uLiyMjIICcnBz8/PwBCQ0O1dYQQQliXyWtnVYeUlBQO
HTpEv379OHfuHI6OjgA4Ojpy7tw5AM6cOYO/v7+2jtFoJD09Hb1ej9Fo1NoNBgPp6enlxlmwYIH2
c0BAAAEBAZbvjBBC1GGxsbHExsaavb7Vi0hubi5jxoxh+fLlZaYN63S6MmfJ344bi4gQQoiybv6C
XdVbolttOAvgr7/+YsyYMUyePJlRo0YBJXsfZ8+eBSAjI0M7E95gMJCamqqtm5aWhtFoxGAwkJaW
VqrdYDBYsRdCCCGus1oRUUoxffp0PD09efrpp7X24OBgIiMjAYiMjNSKS3BwMOvWraOgoIDk5GSS
kpLw8/PDyckJOzs74uLiUEqxZs0abR0hhBBWVi2H98uxe/dupdPplLe3t/Lx8VE+Pj5qy5Yt6uLF
iyowMFC5ubmpoKAgdfnyZW2dRYsWKRcXF9W1a1cVExOjtcfHx6sePXooFxcX9dRTT5Ubz4pdqxHc
ATNSJF5djVef+1Yz8az92VIVcj+ROkrOWJd4tTdefe5bzcSz5mdZVT87rXpMRAghRP0iRUQIIYTZ
pIgIIYQwmxQRIYQQZpMiIoQQwmxSRIQQQphNiogQQgizSRERQghhNikiQgghzCZFRAghhNmkiAgh
hDCbFBEhhBBmkyIihBDCbFJEhBBCmE2KiBBCCLNJERFCCGE2KSJCCCHMJkVECCGE2epsEYmJicHD
wwM3NzdeffXVmk5HCCHuSHXyHutFRUV07dqVbdu2YTAY6Nu3L5999hndunXTlpF7rFs8osSTeLUw
1p0RT+6xbmH79u3D1dUVZ2dn9Ho9EyZMICoqqqbTEkKIO06dLCLp6el07NhRe240GklPT6+xfPbv
349Op7PqQwghagPbmk7AHJX9EK3/H7bW7p/Ek3i1MVb9j1ebP8vqZBExGAykpqZqz1NTUzEajaWW
qc/HQ4QQoraok8NZffr0ISkpiZSUFAoKCli/fj3BwcE1nZYQQtxx6uSeiK2tLW+//TYPPvggRUVF
TJ8+vdTMLCGEENZRJ/dEAIYOHcrvv//OiRMneP7558tdZt68eXTr1g1vb29Gjx5NVlaWlbOsHvX1
HJnU1FQGDRpE9+7d6dGjBytWrKjplKpFUVERvr6+jBgxoqZTsbjMzEweeeQRunXrhqenJ3v37q3p
lCwqPDyc7t274+XlxcSJE7l27VpNp3Rbpk2bhqOjI15eXlrbpUuXCAoKwt3dncGDB5OZmXnLbdTZ
IlIZgwcP5tixYxw+fBh3d3fCw8NrOqXbVlRUxJNPPklMTAwJCQl89tln/PbbbzWdlkXo9XreeOMN
jh07xt69e3nnnXfqTd9utHz5cjw9PWv1wVJzzZkzh2HDhvHbb79x5MiRejVCkJKSwgcffMDBgwc5
evQoRUVFrFu3rqbTui1Tp04lJiamVNuSJUsICgoiMTGRwMBAlixZcstt1OsiEhQUhI1NSRf79etH
WlpaDWd0++rzOTJOTk74+PgA0Lx5c7p168aZM2dqOCvLSktLY/PmzTz22GP1bvJHVlYWu3fvZtq0
aUDJsLO9vX0NZ2U5dnZ26PV68vLyKCwsJC8vD4PBUNNp3Zb+/fvj4OBQqi06OpqwsDAAwsLC2Lhx
4y23Ua+LyI1WrVrFsGHDajqN21bbzpGpLikpKRw6dIh+/frVdCoWNXfuXJYuXap9ualPkpOTadu2
LVOnTqVXr148/vjj5OXl1XRaFtOqVSueffZZOnXqRIcOHWjZsiUPPPBATadlcefOncPR0REAR0dH
zp07d8vl6/xfclBQEF5eXmUe33zzjbbMokWLaNiwIRMnTqzBTC2jPg6B3Cw3N5dHHnmE5cuX07x5
85pOx2K+/fZb2rVrh6+vb73bCwEoLCzk4MGDzJo1i4MHD9KsWTOTQyF1ycmTJ3nzzTdJSUnhzJkz
5Obmsnbt2ppOq1pV5uTmOjk760bff//9LV9fvXo1mzdvZvv27VbKqHpV5hyZuuyvv/5izJgxTJo0
iVGjRtV0Ohb1008/ER0dzebNm7l69SrZ2dmEhoby8ccf13RqFmE0GjEajfTt2xeARx55pF4Vkfj4
eO655x5at24NwOjRo/npp5949NFHazgzy3J0dOTs2bM4OTmRkZFBu3btbrl8nd8TuZWYmBiWLl1K
VFQUjRs3rul0LKI+nyOjlGL69Ol4enry9NNP13Q6Frd48WJSU1NJTk5m3bp13H///fWmgEDJMa2O
HTuSmJgIwLZt2+jevXsNZ2U5Hh4e7N27l/z8fJRSbNu2DU9Pz5pOy+KCg4OJjIwEIDIy0vSXOVWP
ubq6qk6dOikfHx/l4+OjZs6cWdMpWcTmzZuVu7u7cnFxUYsXL67pdCxm9+7dSqfTKW9vb+13tmXL
lppOq1rExsaqESNG1HQaFvfLL7+oPn36qJ49e6qHH35YZWZm1nRKFvXqq68qT09P1aNHDxUaGqoK
CgpqOqXbMmHCBNW+fXul1+uV0WhUq1atUhcvXlSBgYHKzc1NBQUFqcuXL99yG3XyUvBCCCFqh3o9
nCWEEKJ6SRERQghhNikiQgghzCZFRAghhNmkiIhaoUGDBvj6+uLj40Pv3r35+eefAThz5gxjx461
SIy3336b1atXW2Rb1aWgoIAHHngAX19fvvjii1KvHT9+XHt//vjjjwq3cf0EzZSUlFIX1qsJzzzz
DLt3767RHET1qvMnG4r6oWnTphw6dAiArVu38vzzzxMbG0uHDh3KfJiaQylFREQE+/fvL/NaUVER
DRo0uO0YlnDw4EF0Op32Xtxo48aNjB07lhdeeOGW27D2VQ2uT/AsL+7MmTN59tln6d+/v1VzEtYj
eyKi1snKyqJVq1ZA6W/Tq1evZvTo0QwdOhR3d3fmz58PlBSBKVOm4OXlRc+ePXnzzTfLbHPPnj14
eHhga1vyvSkgIIC5c+fSt29fli9fzrfffou/vz+9evUiKCiI8+fPA7BgwQKmTZvGoEGDcHFx4a23
3tK2+fLLL+Ph4UH//v2ZOHEiy5YtA0oujzF06FD69OnDgAED+P3338vkc+nSJUaNGoW3tzd33303
R48e5c8//2TSpEns378fX1/fUnsbmzdvZvny5bz77rsEBgYC8N///le7zM/y5ctv+Z5evXqVqVOn
0rNnT3r16kVsbCwAw4cP5+jRowD4+vry8ssvA/Cf//yHDz/8EIClS5fi5+eHt7c3CxYs0H4vXbt2
JSwsDC8vL1JTU8v9Hbi5uZGSkmLycuKiDrPC+SxCmNSgQQPl4+OjPDw8lL29vTpw4IBSSqnk5GTV
o0cPpZRSH330kerSpYvKzs5WV69eVZ07d1apqakqPj5eBQUFadsq7wS38PBw9frrr2vPAwIC1N//
/nft+Y0nVH3wwQfq2WefVUop9eKLL6p7771XFRQUqAsXLqjWrVurwsJCtW/fPuXj46OuXbumcnJy
lJubm1q2bJlSSqn7779fJSUlKaWU2rt3r7r//vvL5PPkk0+ql156SSml1I4dO5SPj49SquQkxOHD
h5f7Hi1YsECLER8fr7y8vFReXp7Kzc1V3bt3V7/88otSSqnmzZuXee9ef/11NX36dKWUUsePH1ed
OnVSV69eVUuWLFHvvPOOysrKUn379lVDhgxRSik1aNAglZiYqL777js1Y8YMpZRSRUVFavjw4WrX
rl0qOTlZ2djYqLi4OC2fin4HoaGhavPmzeX2SdR9MpwlaoUmTZpoQzh79+4lNDSUX3/9tcxygYGB
tGjRAgBPT09Onz6Np6cnf/zxB7Nnz+ahhx5i8ODBZdY7ffo09913X6m28ePHaz+npqYybtw4zp49
S0FBAV26dAFKhmgeeugh9Ho9rVu3pl27dpw9e5Y9e/YwatQoGjZsSMOGDbUbTF25coWffvqp1HGc
goKCMvns2bOHr776CoBBgwZx8eJFcnNzTV6Y8frrP/74I6NHj6ZJkyZAyXWcdu3ahbe3d7nr7dmz
h9mzZwPQtWtXOnfuTGJiIv3792fFihXcddddPPTQQ2zbto38/HySk5Nxc3PjvffeY+vWrfj6+mr9
O3HiBB07dqRz5874+fkB4OLiUuHvoEOHDqSkpNyyX6LukuEsUev4+/tz4cIFLly4UOa1Ro0aaT83
aNCAwsJCWrZsyeHDhwkICOB///sfjz32WLnbvfkDulmzZtrPTz31FLNnz+bIkSO899575Ofna681
bNiwTEydTldqe9d/Li4uxsHBgUOHDmmPY8eOVSqfqigvvqljITfH0+l09O3bl/j4eHbv3s2AAQPw
8fHh/fffp0+fPtpyzz//vNaXxMREpk6dCpR+/1q2bMmRI0fK/R1UJjdRd0kREbXO8ePHKSoq0q6W
eitKKS5evEhRURGjR4/m5Zdf5uDBg2WW69y5M2fPni2z7nXZ2dl06NABoNQMrvI+6HU6Hffeey/f
fPMN165dIzc3l02bNgHQokUL7rrrLjZs2KCtf+TIkTLb6N+/v3YZ8djYWNq2bVuly97379+fjRs3
kp+fz5UrV9i4ceMtD17fGC8xMZHTp0/TtWtX9Ho9RqORL774gnvuuYf+/fvz+uuvM2DAAAAefPBB
Vq1axZUrV4CS+9n8+eefZbZ/8eJFCgsLy/0dZGRk4OzsXOm+ibpFhrNErZCfn68NmSil+Pjjj7Vv
rzf+e/M3Wp1OR3p6OlOnTqW4uBig3MuP33fffbz99ttl1r1uwYIFjB07FgcHB+6//35OnTpVYUwo
uZpycHAwPXv21O5Rff0ufmvXrmXmzJm88sor/PXXX4SEhNCzZ89S618/YO/t7U2zZs20q6aaun/D
9dd8fX2ZMmWKNpz0+OOPa0NZN65//edZs2Yxc+ZMevbsia2tLZGRkej1egAGDBjAjh07aNSoEffd
dx9nzpzRClJQUBC//fYbd999N1BSJD/55JMyed7qd3Do0CFWrFhRYZ9E3SYXYBR3BKUUvXr1Ii4u
rtTw1O24cuUKzZo1Iy8vj4EDB/LBBx9ot/cVJRITE/nHP/5BdHR0TaciqokMZ4k7gk6n4/HHH7fo
nehmzJiBr68vvXv35pFHHpECUo7//e9/PPfcczWdhqhGsicihBDCbLInIoQQwmxSRIQQQphNiogQ
QgizSRERQghhNikiQgghzCZFRAghhNn+P6hfoJPwyXAwAAAAAElFTkSuQmCC
">

</div>
</div>

</div>
</div>

</div>
<div class="text_cell_render border-box-sizing rendered_html">
<p>Whoa! Only ~70k of Marissa Mayer's followers are suspect when using the same criteria that we applied to Tim O'Reilly. This number as a percentage is significantly lower than Tim O'Reilly's. If you take a closer look at their account data you'll see that Tim O'Reilly was a very early user, creating an account in March 2007, and was already a popular and well-known user by 2009 when there was significant growth (and may have been a spam bot attack.) Marissa Mayer, on the other hand, didn't create an account until late November 2008, so she would likely not yet have been a popular user in early 2009 when the sharp growth occurred.</p>
<p>Let's subtract out these suspect followers from the previously computed common set between Tim O'Reilly and Lady Gaga to see how many remain.</p>
</div>
<div class="cell border-box-sizing code_cell vbox">
<div class="input hbox">
<div class="prompt input_prompt">
In&nbsp;[]:
</div>
<div class="input_area box-flex1">
<div class="highlight"><pre><span class="n">marissamayer_suspect_followers_ids</span> <span class="o">=</span> <span class="nb">set</span><span class="p">([</span><span class="n">f</span><span class="p">[</span><span class="s">&#39;id&#39;</span><span class="p">]</span> <span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">marissamayer_suspect_followers</span><span class="p">])</span>

<span class="n">all_common_followers_ids_not_suspect</span> <span class="o">=</span> <span class="n">all_common_followers_ids</span> <span class="o">-</span> \
                                       <span class="p">(</span><span class="n">timoreilly_suspect_followers_ids</span> <span class="o">|</span> <span class="n">marissamayer_suspect_followers_ids</span><span class="p">)</span>

<span class="k">print</span> <span class="s">&quot;Tim O&#39;Reilly, Lady Gaga, and Marissa Mayer have {0} non-suspect followers in common.&quot;</span>\
<span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">all_common_followers_ids_not_suspect</span><span class="p">))</span>
</pre></div>

</div>
</div>

<div class="vbox output_wrapper">
<div class="output vbox">


<div class="hbox output_area"><div class="prompt"></div>
<div class="box-flex1 output_subarea output_stream output_stdout">
<pre>
Tim O&apos;Reilly, Lady Gaga, and Marissa Mayer have 25470 non-suspect followers in common.

</pre>
</div>
</div>

</div>
</div>

</div>
<div class="text_cell_render border-box-sizing rendered_html">
<p>It appears that the vast majority of the common followers are not suspect at all and may be active users! In other words, Tim O'Reilly, Lady Gaga, and Marissa Mayer have 25k followers in common that have passed the initial test of scrutiny.</p>
</div>
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="Rewind:-Wrapping-up-a-few-loose-ends">Rewind: Wrapping up a few loose ends<a class="anchor-link" href="#Rewind:-Wrapping-up-a-few-loose-ends">&#182;</a></h2>
</div>

<div class="text_cell_render border-box-sizing rendered_html">
<p>Before wrapping up, there are just a few additional unanswered questions that we can answer in order to create a little more symmetry and closure for some of the comparisons. In particular, we have the data and variables already defined to answer these questions:</p>
<ul>
<li>How many of Marissa Mayer's followers follow Lady Gaga?</li>
<li>How many followers do Tim O'Reilly and Marissa Mayer have in common?</li>
</ul>
</div>
<div class="cell border-box-sizing code_cell vbox">
<div class="input hbox">
<div class="prompt input_prompt">
In&nbsp;[]:
</div>
<div class="input_area box-flex1">
<div class="highlight"><pre><span class="n">marissamayer_ladygaga_followers_ids</span> <span class="o">=</span> <span class="n">marissamayer_followers_ids</span> <span class="o">&amp;</span> <span class="n">ladygaga_followers_ids</span>
<span class="n">marissamayer_ladygaga_followers_ids_not_suspect</span> <span class="o">=</span> <span class="n">marissamayer_ladygaga_followers_ids</span> <span class="o">-</span> <span class="n">marissamayer_suspect_followers_ids</span>
                                                  

<span class="n">timoreilly_marissamayer_followers_ids</span> <span class="o">=</span> <span class="n">timoreilly_followers_ids</span> <span class="o">&amp;</span> <span class="n">marissamayer_followers_ids</span>
<span class="n">timoreilly_marissamayer_followers_ids_not_suspect</span> <span class="o">=</span> <span class="n">timoreilly_marissamayer_followers_ids</span> <span class="o">-</span> <span class="n">marissamayer_suspect_followers_ids</span>
                                                    

<span class="k">print</span> <span class="s">&quot;Marissa Mayer and Lady Gaga have {0} followers in common. {1} of them are not suspect.&quot;</span>\
<span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">marissamayer_ladygaga_followers_ids</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">marissamayer_ladygaga_followers_ids_not_suspect</span><span class="p">))</span>    
    
<span class="k">print</span> <span class="s">&quot;Tim O&#39;Reilly and Marissa Mayer have {0} followers in common. {1} of them are not suspect.&quot;</span>\
<span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">timoreilly_marissamayer_followers_ids</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">timoreilly_marissamayer_followers_ids_not_suspect</span><span class="p">))</span>
</pre></div>

</div>
</div>

<div class="vbox output_wrapper">
<div class="output vbox">


<div class="hbox output_area"><div class="prompt"></div>
<div class="box-flex1 output_subarea output_stream output_stdout">
<pre>
Marissa Mayer and Lady Gaga have 82553 followers in common. 72107 of them are not suspect.
Tim O&apos;Reilly and Marissa Mayer have 99457 followers in common. 94612 of them are not suspect.

</pre>
</div>
</div>

</div>
</div>

</div>
<div class="text_cell_render border-box-sizing rendered_html">
<p>Recalling that more than 225k of Tim O'Reilly's non-suspect followers also follow Lady Gaga (~25% of his non-suspect follower base), we can now see that ~72k of Marissa Mayer's followers also follow Lady Gaga (~18% of her non-suspect follower base.)</p>
<p>Marissa Mayer and Tim O'Reilly have approximately 100k common followers between them with about 95k of these common followers passing the test of scrutiny.</p>
</div>
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="Where-to-go-from-here">Where to go from here<a class="anchor-link" href="#Where-to-go-from-here">&#182;</a></h2>
</div>

<div class="text_cell_render border-box-sizing rendered_html">
<p>There are countless possibilities for exploring the data, and I hope that this notebook has given you more ideas than you know what to do with. Although we've just considered a narrow dimension of it, there is much, much more tucked away in the account profiles.</p>
<p>Enjoy the process of extending this notebook and stay tuned at http://MiningTheSocialWeb.com for more content like it. If there is sufficient interest, there may be an encore presentation that picks up from here.</p>
<p>Enjoy!</p>
<p>Suggested exercises:</p>
<ul>
<li>Apply similar analysis for the accounts that Tim O'Reilly, Lady Gaga, and Marissa Mayer are following (the accounts that they are <em>interested</em> in.) How influenceable are these accounts? What metrics would you apply to try and make this determination?</li>
<li>Would you expect that a higher percentage of females might follow Marissa Mayer than Tim O'Reilly? (You can analyze first names to get a reasonable idea of whether or not this is the case. See http://tedwise.com/check-name for a list of fist names that you can use.)</li>
<li>Pick a figure of your own choosing and introduce them to the comparison matrix. Who are they most similar to based upon the Jaccard similarity of their followers?</li>
</ul>
</div>
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="4.-Summarize">4. Summarize<a class="anchor-link" href="#4.-Summarize">&#182;</a></h1>
</div>

<div class="text_cell_render border-box-sizing rendered_html">
<p>Although there are numerous possibilities for quite interesting analysis, the scope of this notebook was intentionally kept fairly narrow, and the objective was more to whet your appetite for analyzing social web data than to rigorously <em>prove</em> anything. That said, we did observe a few interesting things:</p>
<ul>
<li><p><strong>Approximately 50% of Tim O'Reilly's followers are suspect</strong>. In other words, these &quot;users&quot; may not be users at all. They may be spam-bots or abandoned accounts who are not influenceable at all.</p></li>
<li><p>In contrast, we discovered that <strong>only ~15% of Marissa Mayer's followers were suspect</strong> when applying the same criteria as that of Tim O'Reilly.</p>
<ul>
<li>Although purely speculative at this point, <strong>there may have been a spam-bot attack in early 2009</strong> that explains this given that the majority of Tim O'Reilly's suspect users are from that year, which is the same year that Twitter experiences unprecedented user growth. Further investigation would be needed to say for sure. (Marissa Mayer wouldn't yet have been a popular or well-known Twitter user back then since she didn't create an account until late 2008. Tim O'Reilly, on the other hand, was already an established and well-known user who would have been a ripe target for spam-bots.)</li>
</ul></li>
<li><p>Tim O'Reilly and Lady Gaga have more than 250k followers in common with almost 225k of them passing the test of scrutiny. What's interesting about this finding is that it means that <strong>roughly 25% of Tim O'Reilly's followers also follow Lady Gaga as compared to 18% for Marissa Mayer</strong> once you filter out the suspect accounts.</p></li>
<li><p>Tim O'Reilly and Marissa Mayer have about 100k followers in common with 95k of these followers being non-suspect.</p></li>
<li><p>We computed Jaccard similarity for the combinations of Tim O'Reilly, Lady Gaga, and Marissa Mayer. Not too surprisingly, <strong>Tim O'Reilly and Marissa Mayer had a higher Jaccard similarity than the other two possible combinations involving Lady Gaga</strong>.</p></li>
<li><p><strong>Tim O'Reilly, Lady Gaga, and Marissa Mayer have more than 25k total followers in common</strong> that have passed the initial test of scrutiny.</p></li>
</ul>
<p>See <a href="http://wp.me/p3QiJd-4k">http://wp.me/p3QiJd-4k</a> for a more detailed write-up of this summary.</p>
</div>
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="Recommended-Links">Recommended Links<a class="anchor-link" href="#Recommended-Links">&#182;</a></h1>
</div>

<div class="text_cell_render border-box-sizing rendered_html">
<ul>
<li><a href="http://MiningTheSocialWeb.com">Mining the Social Web - Blog</a></li>
<li><a href="http://miningthesocialweb.com/quick-start/">Mining the Social Web - Quick Start Guide</a></li>
<li><a href="http://bit.ly/MiningTheSocialWeb2E">Mining the Social Web - GitHub</a></li>
<li><a href="http://bit.ly/135dHfs">Mining the Social Web - Book (O'Reilly Media)</a></li>
<li><a href="http://amzn.to/GPd59m">Mining the Social Web - Book (Amazon)</a></li>
</ul>
</div>
</body>
</html>
